如何处理node.js casterror?
我有以下电话:如何处理node.js casterror?,node.js,mongoose,Node.js,Mongoose,我有以下电话: .post(function(req, res) { member.findById(req.params.member_id, function(err, result) { if (err) return (err); new_address = { street1 : req.body.street1, street2 : req.body.street2, City : req.body.City,
.post(function(req, res) {
member.findById(req.params.member_id, function(err, result) {
if (err)
return (err);
new_address = {
street1 : req.body.street1,
street2 : req.body.street2,
City : req.body.City,
State : req.body.State,
Zip : req.body.Zip,
Lat : req.body.Lat,
Lng : req.body.Lng
};
if(result.address === undefined){
result.address.push(new_address);
}
else{
result.address = [new_address];
}
result.save(function(err) {
if (err)
return res.send(err);
res.json({ message: 'Address created!!!' });
});
});
});
由于某些原因,在尝试调用result.save()
时,我收到以下错误:
{
"message": "Cast to undefined failed for value \"[object Object]\" at path \"address\"",
"name": "CastError",
"value": [
{
"address_type": "Home",
"street1": "2018 Elliot St",
"City": "Alexandria",
"State": "LA",
"Zip": 71301,
"Lat": 12,
"Lng": 32
}
],
"path": "address"
}
我的地址架构是成员架构的子架构,如下所示:
var mongoose = require('mongoose'),
Schema = mongoose.Schema
var AddressSchema = Schema({
Address_type : String,
street1 : String,
street2 : String,
City : String,
State : String,
Zip : Number,
Lat : Number,
Lng : Number
});
module.exports = mongoose.model('Address', AddressSchema);
以下是成员架构:
var mongoose = require('mongoose'),
Schema = mongoose.Schema
var Address = require('./address');
var Award = require('./award');
var MemberSchema = Schema({
FName : String,
LName : String,
address: [Address],
phone : {
type : String,
number : String
},
email: String,
gender: String,
DOB: Date,
rank : {
level : String,
updated: { type: Date, default: Date.now }
},
Awards : {
personal : Boolean,
award : [Award],
granted: { type: Date, default: Date.now }
}
});
module.exports = mongoose.model('Member', MemberSchema);
我在这里挣扎着。如果有人知道我为什么会犯这个错误,我将不胜感激
非常感谢这里的问题是,在
成员模式
中定义嵌入模式时,您试图使用模型(地址
)。在定义时,应该使用模式,而不是模型
var Address = require('./address');
根据相关文件中的导出语句,这是一个模型。要么导出模式,要么更好,您可以像这样从模型中访问模式:Address.schema
因此,在您的MemberSchema
定义中更改这一行
address: [Address],
对此
address: [Address.schema],
在其他任何地方,你也可以像这样使用它,比如
award:[award.schema],
你能发布成员模式吗?奖励也会发生同样的事情吗?我没有见过这样使用模式。不是说这一定是错的,但是如果奖励.award.push也不起作用,我们可能会有什么问题。这是我的第一次尝试。我正要去颁奖典礼的时候地址还在工作。我会继续尝试,我希望智慧会到来。哦,我的上帝,我已经为此自杀了。在任何文档中都没有。这太棒了。非常感谢。