正在学习 - 想知道如何在不同的馆藏中分别创建2个单独的文件:活动& 活动评论
我能够在两者之间引用objectId,但如果我想填充事件中的信息进入事件审核,因为它已创建?我已经尝试过几个小时的谷歌答案,但到目前为止,我发现的每种方法都没有成功。没有找到具体答案的人只需要更多知识就能指出我正确的方向。
答案 0 :(得分:1)
您需要明确声明事件审核模式中的字段引用事件集合中文档的ObjectID。像这样......
var mongoose = require('mongoose'), Schema = mongoose.Schema
var EventReviewSchema = new Schema({
someField:{
type: Schema.Types.ObjectId,
ref: 'Event' // Note this is the name of the event model, not schema
}
})
你提到你想要“创建它”。
请记住,在MongoDB中,写操作在单个文档级别只是原子的。因此,没有“内置”方式来保证您创建的每个事件文档都有相应的事件审阅文档(我假设这是您正在尝试做的事情。)
您需要保存事件文档,获取该文档的ObjectId并使用它来填充事件审阅文档中的相应字段。但请记住,如果在第一次和第二次写操作之间发生某些错误,第二次写操作可能会失败。
我的建议是在查询事件审阅文档时尝试以可以使用mongoose FindOrCreate方法(带plugin)的方式编写应用程序。这是解决这个问题的快捷方式。
编辑:
var Review = mongoose.model('Review', EventReviewSchema)
module.exports.reviewCreate = function(req, res, next) {
var eventid = req.params.eventid
if (eventid) {
var review = new Review() // Review model
review.someField = eventId
review.save(function(err){
if(err) return next(err)
// save successful
})
}
}