Sails.js beforeValidate()清空值参数

时间:2015-02-19 19:49:29

标签: javascript sails.js

我遇到了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()函数中被删除?

1 个答案:

答案 0 :(得分:0)

也许你需要POST(创建)到端点位置模型,然后POST(创建)到记者模型,然后POST YOUMODEL / id / reporterID,POST YOUMODEL / id / location ID