大家好,我一直坚持使用 mysql 数据库的特定表的模型。我在 SailsJS 应用程序中使用 2 个不同的数据库。这两个数据库之一是在 SailsJS 应用程序之前创建的,因此该数据库中的表没有在 config/models.js 中配置的默认属性。 例如,当我尝试在使用旧数据库的模型上调用 find() 函数时,这会导致错误,因为它缺少一列。请参阅以下错误:
: ER_BAD_FIELD_ERROR: Unknown column 'tbl_user.deleted' in 'field list'
我不想将默认属性添加到旧数据库列,那么是否可以忽略 config/models.js 中针对特定模型配置的默认属性?
最佳答案
在尝试了一些事情之后,我想出了以下解决方案。 只需将默认属性添加到您的模型中,但将其添加为函数。
module.exports = {
connection: connection,
migrate: 'safe',
tableName: 'tbl_name',
autoCreatedAt: false,
autoUpdatedAt: false,
autoPK: false,
schema: true,
attributes: {
id: {
columnName: 'id',
type: 'string',
primaryKey: true
},
name: {
columnName: 'name',
type: 'string'
},
email: {
columnName: 'email',
type: 'string'
},
deleted: function(){
var obj = this.toObject();
delete obj.deleted;
return obj;
},
createdBy: function(){
var obj = this.toObject();
delete obj.createdBy;
return obj;
}
}
};
在此示例中,deleted 和createdBy 属性是config/models.js 中的默认属性。我在特定模型中制作了这些属性的函数。在此函数中,我删除此属性并返回没有删除属性的对象。
关于javascript - 忽略 SailsJS 中 1 个特定模型的默认模型属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37807449/