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'); 行。