猫鼬根据条件检查将附加属性附加到结果
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。循环它,你可以使用你的吸气剂。
我想向 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。循环它,你可以使用你的吸气剂。