Mongoose添加异步虚拟字段



我有Recipe模型和Like模型。我想在Recipe模型上设置一个虚拟字段,以便在从数据库中获取食谱时获得它的点赞数。但它返回一个空对象。

RecipeSchema.virtual('likeCount').get(async function () {
const likes = await Like.find({ recipe: this._id });
return likes.length;
});

这不会直接回答您的问题,但如果虚拟机不能处理async函数,则可以始终在RecipeSchema中保留对Like对象数组的引用。

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const recipeSchema = Schema({
...
likes: [{ type: Schema.Types.ObjectId, ref: 'Like' }]
...
});

然后,您将在文档中有一个数组,您可以参考它的长度来计算点赞数,如果您需要点赞文档中的实际信息,您可以稍后populate它们。

注意:您必须编写逻辑,才能在正确的Recipe中向likes数组添加新的Likes。

最新更新