mongoose - 路径上的值“[object Object]”转换为数字失败
mongoose - Cast to number failed for value "[object Object]" at path
我的架构如下所示:
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
的情况下这样做,但注意到它是一个字符串。
更改此行:
buyer.credit = { credit: parseInt(req.body.amount,10) };
收件人:
buyer.credit = req.body.amount;
您只想将 buyer.credit
设置为该值,而不是另一个具有自己的 credit
字段的对象。您不需要 parseInt
,因为 Mongoose 会根据您将 credit
定义为架构中的 Number
来为您执行此操作。
您也可以删除 buyer.markModified('credit');
行。
我的架构如下所示:
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
的情况下这样做,但注意到它是一个字符串。
更改此行:
buyer.credit = { credit: parseInt(req.body.amount,10) };
收件人:
buyer.credit = req.body.amount;
您只想将 buyer.credit
设置为该值,而不是另一个具有自己的 credit
字段的对象。您不需要 parseInt
,因为 Mongoose 会根据您将 credit
定义为架构中的 Number
来为您执行此操作。
您也可以删除 buyer.markModified('credit');
行。