使用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只是一个哈希而不是文档实例。有没有办法让人口返回文件实例???
将这样的东西变成可能的好方法是什么?
答案 0 :(得分:1)
除非您使用lean()
,否则填充的字段是 doc实例。
看起来tweetSchema
中的用户字段被称为owner
,而不是user
,因此这应该有效:
Tweet.findOne({}).populate('owner').exec(function(err, tweet){
console.log(tweet.owner.test());
});