猫鼬根据条件检查将附加属性附加到结果

Mongoose append additional properties to the results based on conditional checks

我想向 mongoose 查询的结果文档添加额外的属性。我有一个 Post 模型,在 post 模型中我添加了收藏夹,其中包含对喜欢 post 的用户的引用,我想知道用户是否喜欢 [=24] =] 和 post 拥有

的收藏夹总数

Post 型号

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const mongoosePaginate = require('mongoose-paginate-v2');
var aggregatePaginate = require('mongoose-aggregate-paginate-v2');

const postSchema = Schema({
    title: String,
    favourites: [{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'User'
    }],
    description: String
});
var Post = mongoose.model('Post', postSchema.plugin(mongoosePaginate));
Post.prototype.hasLiked = function (uid) {
    return this.favourites.indexOf(uid) > -1
}
Post.prototype.totalLikes = function () {
    return this.favourites.length;
}
module.exports = Post;

控制器

  Post.paginate(query,
    options,
    function (err, result) {
      if (err) {
        console.log(err)
        res.json({
          error: err,
          status: 501,
          message: "Unable to get data"
        });
      } else {
        let isFavourite = result.hasLiked(res.locals.user.uid)
        let favouriteLength = result.totalLikes()
        console.log(isFavourite)
        console.log(favouriteLength)
        res.json({
          status: 200,
          data: result
        });
      }
    }
  );
});

我在 运行 上述代码

时遇到以下错误
TypeError: result.hasLiked is not a function

这是一个有效的解决方案吗?如果不是,请针对此场景提出任何替代解决方案。

Post.paginate 不是 return 一个用 Post.

实例实现的承诺

根据文档 (https://www.npmjs.com/package/mongoose-paginate-v2),您将在 result.docs 中收到您的 post。循环它,你可以使用你的吸气剂。