我有两个模型:用户和阻止。用户可以有很多块,我需要一种方法来映射两个模型之间的关系。我在mongoose文档中遇到了populations并试图用我的模式设置它:
在/models/block.js
:
var mongoose = require('mongoose');
module.exports = mongoose.model('Block',{
_creator:{type:mongoose.Schema.Types.ObjectId, ref:'User'},
name:String,
});
在/models/user.js
:
var mongoose = require('mongoose');
module.exports = mongoose.model('User',{
username:String,
password:String,
email:String,
blocks:[{type: mongoose.Schema.Types.ObjectId, ref:'Block'}]
});
当我保存一个块时:
router.post('/block/new',function(req,res){
var block;
block = new Block({
name = req.body.name,
_creator = req.session.user
});
});
... _creator属性未保存到集合中。我可以确认该块确实存了。当我进入控制台并搜索块(db.blocks.find()
)时,新块出现,但不显示对块的创建者的任何引用。为什么这不起作用?
答案 0 :(得分:0)
我发现了发生了什么事。 id作为字符串存储在req.session.user
中。我需要从req.user._id