Javascript Sails ORM不懂数值吗?
这应该行得通,每件事一步一步都行。除了实际写入数据库。在我的sails应用程序中,我有一个到以下功能的路径:Javascript Sails ORM不懂数值吗?,javascript,sails.js,waterline,value-type,Javascript,Sails.js,Waterline,Value Type,这应该行得通,每件事一步一步都行。除了实际写入数据库。在我的sails应用程序中,我有一个到以下功能的路径: add: function (req, res) { let params = req.allParams(); let idx = params.event_id; let name = params.name; let sport = params.sport; let location = params.location; let i
add: function (req, res) {
let params = req.allParams();
let idx = params.event_id;
let name = params.name;
let sport = params.sport;
let location = params.location;
let idNr = Number(idx);
let sportNr = Number(sport);
let locationNr = Number(location);
let dat = {
name:name,
id:idNr,
sport:sportNr,
location:locationNr
};
console.log(dat);
Event.create(dat)
.then(function (res){ return res.ok(); })
.catch(function (err){
console.log(err);
return res.send(err);
});
}
真的是一个简单的函数,对吗?但根据我的好数据,它失败了:
{
"error": "E_VALIDATION",
"status": 400,
"summary": "2 attributes are invalid",
"model": "Event",
"invalidAttributes": {
"location": [
{
"rule": "number",
"message": "Value should be a number (instead of \"3\", which is a string)"
}
],
"sport": [
{
"rule": "number",
"message": "Value should be a number (instead of \"2\", which is a string)"
}
]
}
}
这怎么会发生?我清楚地使用dat,它需要运动和位置的数字变化。-日志甚至显示dat按预期填充了数值
因此,这完全没有意义;不应该
编辑时,模型定义为:
module.exports = {
attributes: {
id: {
type: 'number',
required: true,
unique: true,
},
name: {
type: 'string',
required: true
},
location: {
type: 'number',
required: true,
},
sport: {
type: 'number',
required: true
},
},
};
这个问题似乎是对sails支持的一个限制
type:'number'
来自官方的关于模型属性的信息。支持以下属性类型:
一串
文本
整数
浮动
日期
日期时间
布尔值
二进制的
大堆
json
媒体文本
长文
目标
作为使用javascript的替代方案
Number()
函数,可以考虑使用
parseInt()
对于已知整数值或
parsefloat()
用于已知浮点数。它告诉您值是字符串而不是数字。在添加函数中尝试console.logtypeof param.location。字符串3与数字3不同。原始HTTP参数总是字符串。@是的,这就是为什么我使用let sportNr=Numbersport重新生成参数;和dat测试控制台.logtypeof dat.location显示数字A,是;对不起,我完全错过了。