我简化了以下代码:
var buySchema = new mongoose.Schema({
userid:String,
timestamp:Number,
price:Number
});
var cardSchema = new mongoose.Schema({
cardid: String,
buy:[{type:mongoose.Schema.Types.ObjectId, ref:'buy'}],
});
var Card = mongoose.model('cards',cardSchema,'cards');
var Buy = mongoose.model('buy',buySchema,'buy');
Card.findOne({'cardid':cardid}, function(err, card) {
var newBuy = new Buy({'userid':userid, timestamp:null,price:null});
newBuy.save(function(err){
card.buy.addToSet(newBuy._id);
});
card.save(function(err,card){
console.log(card.buy); // card.buy[] has an ObjectId ref
});
});
Card.findOne({'cardid':cardid}, function(err, card) {
console.log(card.buy); // !!!!! card.buy[] does not have ObjectId ref !!!!!
});
buy[] 似乎也没有在 mongodb 中保存 ObjectId 引用
如果没有 ObjectId 引用,我以后该如何填充卡片?他们去哪儿了?关于人口我没有得到什么?
最佳答案
您必须为 ref:'buy' 添加引号并添加正确的架构。看mongoose js docs .
var cardSchema = new mongoose.Schema({
cardid: String,
buy:[{type:mongoose.Schema.Types.ObjectId, ref:'buy'}],
});
var Card = mongoose.model('cards',cardSchema);
var Buy = mongoose.model('buy',buySchema);
关于node.js - Mongoose Population ObjectId 引用正在消失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23929377/