微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – 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只是一个哈希而不是文档实例.有没有办法让人口返回文件实例???

什么是一个很好的方式来做这样的事情可能?

解决方法

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

看起来你的tweetSchema中的用户字段被称为所有者,而不是用户,所以这应该工作:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐