2016-06-14 66 views
0

嗨,大家好,我坚持使用mysql数据库的特定表模型。我在SailsJS应用程序中使用了2个不同的数据库。两个数据库之一已经在SailsJS应用程序之前创建,所以此数据库中的表格没有在config/models.js中配置的默认属性。 当我尝试调用使用旧数据库的模型的find()函数时,会导致错误,因为它错过了一列。请参阅以下错误:在1个特定模型中忽略SailsJS中的默认模型属性

: ER_BAD_FIELD_ERROR: Unknown column 'tbl_user.deleted' in 'field list'

我不想默认属性添加到旧的数据库列,所以是可以忽略的config/models.js配置具体型号的默认属性?

+0

非常有趣的用例,我可以看到这在迁移项目中也非常有效。我浏览了过去的项目和水线的文档,我很困惑。我能想到的唯一的事情就是尝试运行模式集模式:“schema:false”,根据这里的文档:https://github.com/balderdashy/waterline-docs/blob/master/models/configuration.md #schema – munkee

+0

@munkee感谢您花时间看看我的问题,但不幸的是,这并没有解决问题。我只是尝试了一些东西,并提出了一个解决方案。看到我的答案。 – Jordi

回答

0

尝试了几件事后,我想出了以下解决方案。 只需将默认属性添加到您的模型中,但将其添加为函数。

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中的默认属性。我在特定模型中对这些属性做了一个函数。在这个函数中,我删除这个属性并返回没有删除属性的对象。