我想向猫鼬查询的结果文档中添加其他属性。我有一个帖子模型,在帖子模型中我添加了收藏夹,其中包含对收藏该帖子的用户的引用,我想了解用户是否喜欢该帖子以及该帖子收藏的总数
帖子模型
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
这是一种有效的解决方案,如果不能解决,请针对这种情况提出其他替代解决方案。
答案 0 :(得分:1)
Post.paginate
不会返回由Post
实例实现的承诺。
按照文档(https://www.npmjs.com/package/mongoose-paginate-v2),您将在result.docs
中收到您的帖子。循环播放,即可使用吸气剂。