如何基于另一个架构填充Mongoose架构虚拟字段

时间:2019-06-22 19:48:15

标签: node.js mongodb mongoose

我一直试图在基于另一个架构的架构上填充虚拟字段,但无法这样做。我怎样才能做到这一点? 我需要在查询时实现这一点,以便调用者不需要知道实现,就像在查询结果后在实现上调用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”。

0 个答案:

没有答案