Posted at

Sails.jsでcreatedAtとupdatedAtを切る方法

More than 3 years have passed since last update.


はじめに

Sails.jsではモデルにcreatedAtとupdatedAtというattributesをデフォルトで持っている。

DB上のテーブルにちゃんとこの名前のカラムがあれば問題は無い。

しかしそれが無い場合は、そんなカラムは無いよ?と怒られる:

ER_BAD_FIELD_ERROR: Unknown column 'user.createdAt' in 'field list'

ER_BAD_FIELD_ERROR: Unknown column 'user.updatedAt' in 'field list'

そんな場合の対処法は2つある。


対処法1:該当するカラムが別名である場合

例えばcreatedAtの代わりにinsert_date、updatedAtの代わりにmodified_dateというカラムを使ってる場合。

このように該当するカラムが別名で存在する場合は、モデルのattributesを次のように設定する:

module.exports = {

attributes: {
createdAt: {
type: 'datetime',
columnName: 'insert_date'
},
updatedAt: {
type: 'datetime',
columnName: 'modified_date'
},
//以下省略
}

//以下省略
};


対処法2:該当するカラムが無い場合

そもそも該当するカラムが無い場合は、models.jsで以下のように設定する:


config/models.js

module.exports.models = {

autoCreatedAt: false,

autoUpdatedAt: false,

//以下、connectionやmigrateの設定
};