[英]Mongoose add asynchronous virtual field
我有一个Recipe
模型和一个Like
模型。 我想在Recipe
模型上设置一个虚拟字段,以便在我从数据库中获取某个食谱时获得该Recipe
数。 但它返回一个空对象。
RecipeSchema.virtual('likeCount').get(async function () {
const likes = await Like.find({ recipe: this._id });
return likes.length;
});
这不能直接回答您的问题,但如果 virtuals 无法处理async
函数,您始终可以在RecipeSchema
保留对 Like 对象数组的RecipeSchema
。
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const recipeSchema = Schema({
...
likes: [{ type: Schema.Types.ObjectId, ref: 'Like' }]
...
});
然后,您将在文档中拥有一个数组,您可以参考 的长度来计算点赞数,如果您需要点赞文档中的实际信息,您可以稍后populate
它们。
注意:您必须编写逻辑以将新的 Likes 附加到正确 Recipe 中的likes
数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.