我无法手动或自动在新保存的对象上填充创建者字段……我能找到的唯一方法是重新查询我已经拥有的我不想做的对象。
这是设置:
var userSchema = new mongoose.Schema({
name: String,
});
var User = db.model('User', userSchema);
var bookSchema = new mongoose.Schema({
_creator: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
description: String,
});
var Book = db.model('Book', bookSchema);
这是我拉头发的地方
var user = new User();
user.save(function(err) {
var book = new Book({
_creator: user,
});
book.save(function(err){
console.log(book._creator); // is just an object id
book._creator = user; // still only attaches the object id due to Mongoose magic
console.log(book._creator); // Again: is just an object id
// I really want book._creator to be a user without having to go back to the db ... any suggestions?
});
});
编辑:最新的猫鼬修复了这个问题并添加了填充功能,请参阅新接受的答案。
原文由 Pykler 发布,翻译遵循 CC BY-SA 4.0 许可协议
您应该能够使用模型的填充函数来执行此操作:http: //mongoosejs.com/docs/api.html#model_Model.populate 在书的保存处理程序中,而不是:
你会做类似的事情:
帮助你的答案可能为时已晚,但我最近被困在这个问题上,它可能对其他人有用。