mongoose - 为数字转换为数字失败" [object Object]"在路上

时间:2015-01-13 22:25:55

标签: javascript node.js mongodb express mongoose

我的架构看起来像这样:

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但是注意到它是一个字符串。

1 个答案:

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