我有一个Recipe
模型和一个Like
模型。我想在Recipe
模型上设置一个虚拟字段,以在从数据库中获取配方时获得喜欢的次数。但是它返回一个空对象。
RecipeSchema.virtual('likeCount').get(async function () {
const likes = await Like.find({ recipe: this._id });
return likes.length;
});
答案 0 :(得分:0)
这不能直接回答您的问题,但是如果虚拟机无法处理async
函数,则始终可以在RecipeSchema
中保留对Like对象数组的引用。
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const recipeSchema = Schema({
...
likes: [{ type: Schema.Types.ObjectId, ref: 'Like' }]
...
});
然后,您将在文档中拥有一个数组,您可以参考其长度来获得多个赞,如果以后需要“赞”文档中的实际信息,则可以populate
进行引用。
注意:您必须编写逻辑以将新的Likes附加到适当食谱中的likes
数组上。