如何增加Mongoose中子文档的属性?

我正在使用Mongoose在NodeJS中增加一个对象的子文档的评级。 我将在下面发布模型和路线代码。 当我在Postman中执行查询时,我得到一个空的json对象,并返回一个400错误。 这意味着在查询的某个地方我做错了什么。

blogPost模型

const BlogPostSchema = new Schema({ content: { type: String, validate: { validator: (content) => content.length > 5, message: 'Content must contain at least 6 characters.' }, required: [true, 'Content must be filled in.'] }, rating: Number, title: String, user: { type: Schema.Types.ObjectId, ref: 'user' }, board: {type: Schema.Types.ObjectId, ref: 'board'}, comments: [commentSchema] }); const BlogPost = mongoose.model('blogPost', BlogPostSchema); module.exports = BlogPost; 

评论架构

 const CommentSchema = new Schema({ content: { type: String, validate: { validator: (content) => content.length > 5, message: 'Content must contain at least 6 characters.' }, required: [true, 'Content must be filled in.'] }, user: { type: Schema.Types.ObjectId, ref: 'user' }, rating: Number }); module.exports = CommentSchema; 

NodeJS路由

 routes.put('/blogPosts/:id/comment/:idm', function(req, res) { const blogPostId = req.param('id'); const commentId = req.param('idm'); BlogPost.findById(blogPostId) .then((blogPost) => { blogPost.comments.findByIdAndUpdate({_id: commentId}, {$inc: {rating: 1}}); }) .then((blogPost) => res.status(200).json({ 'status': 'Comment rating is increased.' })) .catch((error) => res.status(400).json(error)) }); 

这是PostMan的回应

所有的帮助表示赞赏。

这是错误的:

 BlogPost.findById(blogPostId) .then((blogPost) => { blogPost.comments.findByIdAndUpdate({_id: commentId}, {$inc: {rating: 1}}); }) .then((blogPost) => res.status(200).json({ 'status': 'Comment rating is increased.' })) 

应该:

  BlogPost.update({_id: blogPostId, 'comments._id': commentId}, {$inc:{'comments.$.rating':1}}) .then((blogPost) => res.status(200).json({ 'status': 'Comment rating is increased.' }))