Изменить имя поля для атрибутов CreateAt/UpdateAt

Я пытаюсь смоделировать существующую таблицу MSSQL в SailsJS. Неудивительно, что таблицы в существующей базе данных имеют столбец createdAt и updatedAt, аналогичный тому, что генерируется инфраструктурой SailsJS.

Есть ли способ присвоить значение свойства, сгенерированного платформой SailsJS, атрибуту, который я определил? Например:

attributes: {
    ...
    creationDate:{
        columnName:'cre_dt',
        type:'datetime',
        defaultsTo: this.createdAt
    }
    ...
}

Ответы

Ответ 1

Нет, но вы можете полностью отключить автогенерированное свойство и использовать свой собственный:

autoCreatedAt: false,
autoUpdatedAt: false,
attributes: {
    creationDate: {
        columnName: 'cre_dt',
        type: 'datetime',
        defaultsTo: function() {return new Date();}
    },
    updateDate: {
        columnName: 'upd_dt',
        type: 'datetime',
        defaultsTo: function() {return new Date();}
    }
},
//Resonsible for actually updating the 'updateDate' property.
beforeValidate:function(values,next) {
    values.updateDate= new Date();
    next();
}

См. Дополнение к документам Waterline.

Ответ 2

Вы можете переназначить следующий способ:

attributes: {
    createdAt: {
      type: 'datetime',
      columnName: 'cre_dt'
    },
    updatedAt: {
      type: 'datetime',
      columnName: 'upd_dt'
    },
    // your other columns
  }

Ответ 3

Теперь можно использовать autoCreatedAt и autoUpdatedAt для установки настраиваемого имени для этих полей, как описано в http://sailsjs.com/documentation/concepts/models-and-orm/model-settings#?autocreatedat

Если задана строка, эта строка будет использоваться как обычная имя поля/столбца для атрибута createdAt.