我正在使用此模块,当我尝试创建一个Object Sails时,请将我发回(“类型不匹配,以便更新属性”)
这是我的代码:
型号:
module.exports = {
attributes: {
id:{
type: 'string',
primaryKey: 'range'
},
picture:{
type: "string",
required: true
},
title:{
type: "string",
required: true
},
subcategories:{
collection: 'Subcategory',
via: 'category_ref'
},
user_ref:{
model: 'User'
}
}
};
控制器:
create: function (req, res, next) {
let name = "sometext";
var obj = {
id: new String(uuidv4()),
picture: name,
title: req.param('title')
}
Category.create(obj, function (err, cat) {
if (err) {
return next(err);
} else {
return res.send(cat);
}
});
});
},
我使用instanceof
进行了验证,它是一个字符串。
My Sails版本为0.12.14。
提前致谢
答案 0 :(得分:0)
我很确定问题是您使用new String(uuidv4())
。当您将new
与String,Number或Boolean等基本构造函数一起使用时,构造函数将返回一个Object。这不是你想要的。相反,删除new
并像任何普通函数一样调用构造函数,例如String(uuidv4())
。以这种方式调用时,构造函数返回一个原语。
以下示例应该让您了解差异
> new String('test') instanceof String
true
> typeof new String('test')
'object'
> String('test') instanceof String
false
> typeof String('test')
'string'
> new String('test') === 'test'
false
> String('test') === 'test'
true
还有其他一些突出的东西。 id
被定义为模型上的范围键,并且没有模型的哈希键。此外,req.param('title')
可能返回undefined,null或非字符串的内容。