我收到此错误
{ [CastError: Cast to Number failed for value "NaN" at path "area"]
message: 'Cast to Number failed for value "NaN" at path "area"',
name: 'CastError',
kind: 'Number',
value: NaN,
path: 'area' } } }
代码
MySchema.methods = {
updateArea: function (oldArea, newArea) {
var self = this;
self.area = self.area - oldArea + newArea;
return self.save(function (err) {
if (err) {
console.log(err);
return err;
}
});
}
};
然而,当我记录self.area的类型时,它给了我号码。我正在测试并意识到通过将它转换为数字,它有时会起作用。例如,添加此工作并没有错误:
var test = Number(self.area);
self.area = test;
所以看起来像是
MySchema.methods = {
updateArea: function (oldArea, newArea) {
var self = this;
self.area = self.area - oldArea + newArea;
var test = Number(self.area);
self.area = test;
return self.save(function (err) {
if (err) {
console.log(err);
return err;
}
});
}
};
然而,即使简单地将其作为数字转换,也会使用像
这样的行给出错误self.area = Number(self.area - oldArea + newArea);
所以整体看起来像
MySchema.methods = {
updateArea: function (oldArea, newArea) {
var self = this;
self.area = Number(self.area - oldArea + newArea);
return self.save(function (err) {
if (err) {
console.log(err);
return err;
}
});
}
};
仍然会出错。
任何人都知道了什么?
答案 0 :(得分:0)
oldArea
或newArea
中的一个不得为数字。
如果您为undefined
之类的内容添加号码,则结果为NaN
。
var n = 5;
n = n + undefined;
// n is now NaN
有趣的是,typeof NaN
是'number'
,这可能令人困惑,因为它的全部目的是表明它不是有效数字。 : - )