【发布时间】:2020-05-17 02:01:06
【问题描述】:
我正在使用 node.js 实现一个函数来更新 mongoDB 中的值。下面是我的 mongoDB 集合,
我想更新ratings 数组中totalRating 和totalVotes 的值。因此,我在node.js中实现了如下功能。
router.post('/addReview', (req, res) => {
Product.findOneAndUpdate(
{_id: req.body.productId},
{
"$set" : {
"ratings.totalRating": req.body.rating,
"ratings.totalVotes" : req.body.votes
}
},
{new : true},
(err, productInfo) => {
if(err) return res.json({success:false, err});
res.status(200).json(productInfo)
}
)
});
下面是Product Schema,
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const AddItemsSchema = new Schema({
_id: {type:String, required:true},
img: {type:String, required: true},
category: {type:String, required: true},
name: {type:String, required: true},
description: {type:String, required: true},
price: {type:String, required: true},
quantity: {type:String, required: true},
size: {type:String, required: true},
meterial: {type:String, required: true},
discount:{type:Number, default: 0},
comment:{type:Array, default: []},
ratings:{type:Array, required: true}
});
const Products = mongoose.model('additems', AddItemsSchema);
module.exports = Products;
当我使用 postman 发送 post 请求时,它不会更新 db 值并返回 null。有人可以指出我做错了什么吗?谢谢!
邮递员请求正文,
{
"productId": "5eb82cd3e8b80155fc3ee021",
"rating" : 4.0,
"votes" : 1
}
【问题讨论】: