Mongodb - Mongoose Mapping与人口的关系

时间:2014-11-05 22:54:48

标签: javascript node.js mongodb mongoose

我有两个模型:用户和阻止。用户可以有很多块,我需要一种方法来映射两个模型之间的关系。我在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())时,新块出现,但不显示对块的创建者的任何引用。为什么这不起作用?

1 个答案:

答案 0 :(得分:0)

我发现了发生了什么事。 id作为字符串存储在req.session.user中。我需要从req.user._id

中提取它