2016-06-14 72 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中的默認屬性。我在特定模型中對這些屬性做了一個函數。在這個函數中,我刪除這個屬性並返回沒有刪除屬性的對象。