我的架构看起来像这样:
module.exports = mongoose.model('Buyer',{
username: String,
password: String,
email: String,
url: String,
id: String,
firstName: String,
lastName: String,
credit: Number,
});
我试图在提交Stripe付款时加入他们的信用,但是当我这样做时,我会收到标题中的错误:
Cast to number failed for value "[object Object]" at path
以下是我尝试更新credit
的地方:
var query = Buyer.findOne({'_id': req.user._id});
query.exec(function(err,buyer){
buyer.credit = { credit: parseInt(req.body.amount,10) };
buyer.markModified('credit');
buyer.save(function (err) {
if (!err) {
//--NO ERROR
} else {
return console.log(err);
}
});
});
我不确定如何添加到现有的信用,而不是像我上面那样覆盖它,但我想在进一步研究之后我会在另一个问题中提出这个问题。
无论如何,我不明白我的错误是怎么回事。我试过没有parseInt
但是注意到它是一个字符串。
答案 0 :(得分:1)
更改此行:
buyer.credit = { credit: parseInt(req.body.amount,10) };
要:
buyer.credit = req.body.amount;
您只想将buyer.credit
设置为值,而不是另一个具有自己的credit
字段的对象。您不需要parseInt
,因为Mongoose会根据您在架构中credit
作为Number
的定义为您执行此操作。
您也可以删除buyer.markModified('credit');
行。