我正在尝试为帖子保存评论。当我从客户端发布评论时,评论应该与帖子的ObjectId一起保存,我将从帖子页面收集 - req.body.objectId。我尝试了下面的方法,但它只给了我验证错误。
MODEL
var Comment = db.model('Comment', {
postId: {type: db.Schema.Types.ObjectId, ref: 'Post'},
contents: {type: String, required: true}
}
POST
router.post('/api/comment', function(req, res, next){
var ObjectId = db.Types.ObjectId;
var comment = new Comment({
postId: new ObjectId(req.body.objectId),
contents: 'contents'
}
我怎样才能做到这一点?这是实现此类功能的正确方法吗?提前谢谢。
答案 0 :(得分:4)
这不是插入引用类型值的正确方法。
你必须这样做,
router.post('/api/comment', function(req, res, next){
var comment = new Comment({
postId: db.Types.ObjectId(req.body.objectId),
contents: 'contents'
}
它可以按你的意愿工作。
答案 1 :(得分:0)
您需要使用 mongoose.Types.ObjectId()方法将对象ID的字符串表示形式转换为实际的对象ID
var mongoose = require('mongoose');
router.post('/api/comment', function(req, res, next){
var comment = new Comment({
postId: mongoose.Types.ObjectId(req.body.objectId),
contents: 'contents'
}