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());
});

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...