我遇到了beforeValidate()的问题,无法在线找到任何答案。我的模型有两个关系属性,需要在POSTed数据中使用id号。如果用户POST字符串,则会出现验证错误。我想让用户启用POST字符串数据,然后在beforeValidate()内部使用findOrCreate()来查找或创建属性的相关模型,然后用关联模型覆盖POSTed数据的属性' s ID。
我有以下型号:
attributes: {
reporter : { model: 'reporter', required: true },
location : { model: 'location', required: true },
line : { type: 'boolean', required: true, defaultsTo: true },
count : { type: 'int', required: true, defaultsTo: 0},
composition : { type: 'int', required: true, defaultsTo: 3}
},
beforeValidate: function(values, next) {
if (typeof values.reporter !== 'number') {
Reporter.findOrCreate({name: values.reporter}).exec(function(data){
console.log(data)
values.reporter = data.id;
})
};
next();
},
我将此数据发布到模型的create()默认蓝图端点:
{
"location":"Harry's",
"reporter":"tim",
"count":30,
"composition":3,
"line":false
}
当我在beforeValidate()中记录上述值时,我得到了这个:
{ location: NaN,
reporter: NaN,
count: '30',
composition: '3',
line: false }
当我更换" location"和"记者"有ID,我没有收到任何错误。为什么字符串值在beforeValidate()函数中被删除?
答案 0 :(得分:0)
也许你需要POST(创建)到端点位置模型,然后POST(创建)到记者模型,然后POST YOUMODEL / id / reporterID,POST YOUMODEL / id / location ID