我有Post
模型和Comment
模型。当用户发布评论时,postID
将作为参数发送。
保存评论后,它的id
将被推送到属于帖子的comments
数组中。
Post
模型的commentCount
是一个虚拟属性,它会计算comments
数组中有多少个注释ID。
这是我的评论控制器:
create(req, res, next) {
const commentProps = req.body;
const postId = req.params.id;
Comment.create(commentProps)
.then(comment => {
Post.findById({ _id: postId })
.then(post => {
console.log(post);
console.log('comment id is ' + comment._id);
post.comments.push(comment._id);
console.log(post);
console.log('commentCount is ' + post.commentCount);
});
return res.send(comment);
})
.catch(next);
},
所有日志都应该正常运行。 comment._id
被推入comments
数组,commentCount
已增加1
。
然而我的测试断言没有通过:
it('POST to /api/comments/:id creates a new comment and increases posts commentCount', done => {
const post = new Post({
author: user._id,
text: 'This is a post',
createdAt: 0,
expiresAt: 0,
voteCount: 0
});
post.save()
.then(() => {
Comment.count().then(count => {
request(app)
.post(`/api/comments/${post._id}`)
.send({
author: user._id,
text: 'This is a comment',
createdAt: 0,
postId: 'randomPost'
})
.end(() => {
Comment.count().then(newCount => {
console.log('Comment count is ' + post.commentCount);
assert(count + 1 === newCount);
assert(post.commentCount === 1);
done();
});
});
});
});
});
上面测试中的日志返回0
,如果我记录post.comments
,那么它就会以空数组的形式返回。
知道我在这里做错了什么?
谢谢!