使用mongoose的populate时,可以返回文档,但它不是定义架构方法的对象实例. var tweetSchema = new mongoose.Schema({ owner: { type: Schema.Types.ObjectId, ref: 'User' }, message: { type: String },});var userSchema = new mo
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()); });