这是一个客户模型,我想用address.js模型中的属性填充,但是,当我们使用Postman发布JSON时,我得到500验证错误,并没有提示问题的原因。任何帮助都会非常感激,因为我是sails,js,Javascript和编程的新手,所以我的语法可能不对!
//Customer.js
var Customer = {
attributes: {
honorific: 'STRING',
first_name: 'STRING',
middle_name: 'STRING',
last_name: 'STRING',
addr:'Address.address',
delivery_addr:'Address.address',
fullName:function() {
return this.first_name + ' ' + this.last_name;
}
}
};
module.exports = Customer;
答案 0 :(得分:1)
你不能告诉Sails以你想要的方式从另一个模型中提取数据。从本质上讲,您告诉Sails addr
和delivery_addr
属性属于Address.address
类型,这是没有意义的,因为Sails中没有这样的类型。
您需要做的是使用其中一个Lifecycle Callback从地址模型中提取数据。从您的代码和解释来看,我无法准确理解地址是否适用于每个客户,或者更可能是每个客户的地址不同。如果是后者,我真的不明白为什么你想把地址从另一个模型拉到Customer模型。也许如果你更多地解释了你想要实现的目标和原因,我或许可以给你一个更好的答案。
在任何情况下,您都可以使用beforeValidation
生命周期回调来从其他模型中提取数据(未经测试)。
module.exports = {
attributes: {
honorific: 'STRING',
first_name: 'STRING',
middle_name: 'STRING',
last_name: 'STRING',
addr: 'json',
delivery_addr: 'json',
fullName:function() {
return this.first_name + ' ' + this.last_name;
}
},
beforeValidation: function(values, cb) {
Address.findOne(1).done(err, address) {
if(err) return cb(err);
values.addr = address.toJSON();
values.delivery_addr = address.toJSON();
cb();
});
}
};