我必须使用聚合在对象数组中查找用户ID,一旦有了它,我想使用该ID更新文档。但是,当我尝试像使用Product.findById(productId)
之后那样调用.save()时,会出现一个错误,仅在使用聚合时才会发生。
product.save不是函数
exports.putGift = (req, res, next) => {
const productId = req.body.productId;
const requestId = req.body.requestId;
Product.aggregate([
{ $match: { _id: mongoose.Types.ObjectId(productId) } },
{ $unwind: "$requests" },
{ $match: { "requests._id": mongoose.Types.ObjectId(requestId) } },
{ $project: { "requests.userId": 1 } }
])
.then(product => {
const userId = product[0].requests.userId;
product.winner = userId;
product.status = "given";
return product.save()
.then(result => {
console.log("success");
});
})
.catch(err => {
console.log(err);
});
};
答案 0 :(得分:1)
您不能合计使用.save
。您将需要使用.update()方法来更新文档。
使用方式:
Product.update({_id: 'someid'}, { $set: { winner: 'somevalue', status: 'somevalue' } });