下面的代码有效,它会更新一条记录或创建一条(如果尚不存在的话)。但是,我想将此findOneAndUpdate()语句与populate()方法结合起来,以填充对象的“用户”。将populate("user")语句添加到此逻辑的正确方法是什么?

我尝试在populate()完成后添加findOneAndUpdate方法,但是返回错误,指出该方法不存在。我正在运行最新版本的 Mongoose 。

LoyaltyCard.findOneAndUpdate({ business: businessid}, { $set: newCard, $inc: { stamps: +1 } }, { upsert: true}, function(err, card){

    if(err)
    {

    }
    else
    {

    }

    res.json(result);
});

最佳答案

使用exec()代替回调参数:

LoyaltyCard.findOneAndUpdate(
        {business: businessid},
        {$set: newCard, $inc: {stamps: +1}},
        {upsert: true}
    )
    .populate('user')
    .exec(function(err, card) {
        if (err) {
            // ...
        } else {
            res.json(result);
        }
});

09-30 22:48