带有 sails-mongo 的 Sails Js 强制类型不正确。我究竟做错了什么?
Sailjs with sails-mongo is enforcing type incorrectly. What am I doing wrong?
我有一个 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);
}
});
}
在模型类型中指定 "integer" 而不是 "number"。我没有在文档中找到 "number"。
参见:http://sailsjs.org/documentation/concepts/models-and-orm/attributes
我有一个 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);
}
});
}
在模型类型中指定 "integer" 而不是 "number"。我没有在文档中找到 "number"。
参见:http://sailsjs.org/documentation/concepts/models-and-orm/attributes