创建记录时的Sails.js验证错误:应该是一个数字(而不是" xx",这是一个字符串)

时间:2015-02-17 00:53:12

标签: mysql sails.js waterline

我正在尝试在表中创建记录,它与其他现有模型共享一些属性。

// model:
module.exports = {
  attributes: {
    ...
    contentType: 'string', // This is a combination foreign-key,
                           // which is not currently
    content: 'number',     // supported in waterline
    ...
  }
}

// creating code:
sails.log('item.content:', typeof item.content, item.content);
UserContentLibrary.create({
  user: prodSubscription.user,
  productContentSubscription: pcs.id,
  contentType: item.contentType,
  content: item.content,
}, function uclCreateCB(err, ucl){
  if (err){
    sails.log.error(err);
  }
  itemDone();
});

// error (console output):
debug: item.content: number 3
error: Error (E_VALIDATION) :: 1 attribute is invalid
... 
Invalid attributes sent to UserContentLibrary:
  content
    `undefined` should be a number (instead of "30", which is a string)

从调试日志记录中可以看出,item.content确实是一个数字,但由于某种原因,它在某处转换为字符串,也许是适配器。我怎么能绕过这个?

1 个答案:

答案 0 :(得分:12)

通过将模型属性更改为content: 'integer',问题得以解决。 integer使用numeric验证程序,它接受一个数字或一个只包含数字的字符串。