Node.js mongoosejs找到了一个最好的方法并进行了更新
我想知道是否有最好的方法:Node.js mongoosejs找到了一个最好的方法并进行了更新,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我想知道是否有最好的方法: /** * Article Schema */ var PostSchema = new Schema({ title: { type: String, required: true, trim: true }, author:{ type: String, required: true, default: 'whisher' },
/**
* Article Schema
*/
var PostSchema = new Schema({
title: {
type: String,
required: true,
trim: true
},
author:{
type: String,
required: true,
default: 'whisher'
},
slug: {
type: String,
index: { unique: true }
},
body: {
type: String,
required: true,
trim: true
},
avatar:{
type: String,
required: true
},
status: {
type: String,
required: true,
trim: true
},
created: {
type: Date,
required: true,
default: Date.now
},
published: {
type: Date,
required: true
},
categories: {
type: [String]
},
tags: {
type: [String],
required: true,
index: true
},
comment: {
type: Schema.Types.ObjectId,
ref: 'CommentSchema'
},
meta: {
votes: {
type: Number,
default: 0
},
comments: {
type: Number,
default: 0
}
}
});
/**
* Comment Schema
*/
var CommentSchema = new Schema({
post_id: {
type: Schema.Types.ObjectId,
ref: 'Post',
required: true
},
author:{
type: String,
required: true
},
email:{
type: String,
required: true
},
web:{
type: String
},
body: {
type: String,
required: true,
trim: true
},
status: {
type: String,
required: true,
default: 'pending'
},
created: {
type: Date,
required: true,
default: Date.now
},
meta: {
votes: Number
}
});
/**
* Create a comment
*/
exports.create = function(req, res) {
var comment = new Comment(req.body);
comment.save(function(err) {
if (err) {
return res.jsonp(500,{ error: 'Cannot save the comment' });
}
Post.findById(comment.post_id).exec(function(err, post) {
if (err) {
return res.jsonp(404,{ error: 'Failed to load post with id ' + comment.post_id });
}
if (!post) {
return res.jsonp(404,{ error: 'Failed to load post with id ' + comment.post_id });
}
post.meta.comments = post.meta.comments++;
post.save(function(err) {
if (err) {
return res.jsonp(500,{ error: 'Cannot update the post' });
}
res.jsonp(200,comment);
});
});
});
};
顺便说一句,我只是在看
但就像这样:
Model.findByIdAndUpdate(comment.post_id, { post.meta.comments: post.meta.comments++ })
不工作我认为您需要使用操作符来增加注释计数,如下所示
Post.findByIdAndUpdate(comment.post_id, { $inc: {"meta.comments" : 1} }, callback);
你能确认
post.meta.comments
是在当前范围内定义的吗?这就是问题所在^^有没有办法使用populate?