我有一个sails应用程序只使用一个简单的索引和简单的创建(插入)到mongo数据库 . 当我输入正确的类型数据硬编码为模型中声明的类型时,我收到一个错误 .
url insert err = [Error (E_VALIDATION) 1 attribute is invalid] Invalid attributes sent to urls:
• status
• Value should be a number (instead of "0", which is a string)
这是一个非常小的新项目,因此没有很多设置从默认设置更改 .
由于我在创建中有console.log,我可以看到我发送给urls.create的确切内容:
{ url: 'http://www.dina.com',
status: 0,
statusDate: '2016-11-19T19:46:10.804Z' }
我没有做任何强制类型的事情,看起来我正在服从类型 . 为什么我会收到错误?
该模型看起来像:
// urls.js
module.exports = {
attributes: {
url : { type: 'string' },
status: { type: 'number'},
statusDate: {type: 'date'}
}
};
我的config / models.js架构设置为false:
// config/models.js
module.exports.models = {
connection: 'DigitalOceanMongodbServer',
migrate: 'safe',
schema: false
};
我的控制器创建一个具有硬编码状态和statusDate的新对象:
// urlsController.js
create: function (req, res) {
let url = req.body.url;
if(!url) return res.json({failure: 'empty url'});
let isValid = sails.validurl.isUri(url);
if(!isValid) return res.json({failure: 'url is not valid'});
let newObj = {
url: url,
status: 0, <---- obviously a number
statusDate: new Date().toISOString() <---obviously a date
}
console.log(newObj);
urls.create(newObj).exec(function createCB(err,created){
if (err){
return res.negotiate(err);
} else {
return res.ok(created);
}
});
}
1 回答
在模型类型中指定“整数”而不是“数字” . 我没有在文档中找到“数字” .
见:http://sailsjs.org/documentation/concepts/models-and-orm/attributes
对不起,英语不是我的母语 .