当前位置 : 主页 > 网页制作 > Nodejs >

node.js – mongoose填充为实例对象

来源:互联网 收集:自由互联 发布时间:2021-06-16
使用mongoose的populate时,可以返回文档,但它不是定义架构方法的对象实例. var tweetSchema = new mongoose.Schema({ owner: { type: Schema.Types.ObjectId, ref: 'User' }, message: { type: String },});var userSchema = new mo
使用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());
});
网友评论