我一直试图在基于另一个架构的架构上填充虚拟字段,但无法这样做。我怎样才能做到这一点? 我需要在查询时实现这一点,以便调用者不需要知道实现,就像在查询结果后在实现上调用setter一样。
我尝试使用自定义查询,以便我可以作为一个选择来提供,但是问题是我在自定义查询时无法获得结果。
let postSchema = new Schema({
postId : { type : String, required: true },
postName : { type : String, required: true }
});
let favoritesSchema = new Schema({
postId:{ type: mongoose.Schema.Types.ObjectId, ref: 'Posts' },
userid: { type: String, required: true }
});
postSchema.virtual('isFavorite');
postSchema.query.populateFavorites = function(userId) {
this.isFavorite = false;
if (userId) {
FavoriteModel.find({postId: this.id, "userid": userId}).then(data => {
this.isFavorite = true;
}).catch(err => {
// always handle errors
});
}
return this;
};
postModel
.find(query,{})
.populateFavorites(req.userid)
.exec(function(err, tracks) {});
我希望当用户尝试获取帖子时,将相对于存储在另一个架构上的用户填充虚拟字段“ isFavorite”。