使用config/models.js
爲模型提供全局默認值是完全有效的。關於壓倒一切的實例和類方法,根據我的測試,沒有什麼值得注意的。在模型定義中定義sails.config.models
中的屬性/方法將覆蓋此模型的屬性/方法,而不定義它。
定義:
// config/models.js
module.exports.models = {
attributes: {
// base model instanceMethod
toJSON: function() {
console.log('base.toJSON');
return this.toObject();
}
},
// base model classMethod
test: function() {
console.log('base.test');
}
};
// api/models/first.js
module.exports = {
attributes: {
},
// Overriding classMethods and lifecycle callbacks
test: function() {
console.log('first.test');
}
};
// api/models/second.js
module.exports = {
attributes: {
// Overriding instance methods and attributes
toJSON: function() {
console.log('second.toJSON');
return this.toObject();
}
},
}
測試
> sails.models.first.test();
>'first.test' // sails.config.models.test overridden
> sails.models.first.findOne(1).exec(err,res){ res.toJSON(); });
> 'base.toJSON' // sails.config.models.attributes.toJSON not overridden
> sails.models.second.test();
> 'base.test'; // sails.config.models.test not overridden
> sails.models.second.findOne(1).exec(err,res) { res.toJSON(); });
> 'second.toJSON' // sails.config.models.attributes.toJSON overridden
剛剛發現有'sails.config.model'被合併而正火每個模型。在實現生命週期功能時將它用作基本模型是否有意義?我的基本模型定義了'toJSON()'方法。當我的孩子模型需要重寫這個時,我應該怎麼做? –
目前,我正密切關注如何在覆蓋時保持父母對JSON()行爲的完整性。 –