mongoose填充为实例对象

时间:2015-01-29 03:52:47

标签: node.js mongodb mongoose

使用mongoose的populate时,您可以返回文档,但它不是定义架构方法的对象实例。

var tweetSchema = new mongoose.Schema({
  owner: { type: Schema.Types.ObjectId, ref: 'User' },
  message: { type: String },
});

var userSchema = new mongoose.Schema({
  email: { type: String, unique: true, lowercase: true },
});

userSchema.methods.test = function(){
  return 'test'
}

Tweet.findOne({}).populate('user').exec(function(err,tweet){
  console.log(tweet.user.test);
});

这将导致错误'无法读取属性' userTwit'未定义的'因为tweet.user只是一个哈希而不是文档实例。有没有办法让人口返回文件实例???

将这样的东西变成可能的好方法是什么?

1 个答案:

答案 0 :(得分:1)

除非您使用lean(),否则填充的字段 doc实例。

看起来tweetSchema中的用户字段被称为owner,而不是user,因此这应该有效:

Tweet.findOne({}).populate('owner').exec(function(err, tweet){
  console.log(tweet.owner.test());
});