猫鼬添加异步虚拟字段

时间:2020-08-24 21:47:29

标签: node.js mongodb mongoose

我有一个Recipe模型和一个Like模型。我想在Recipe模型上设置一个虚拟字段,以在从数据库中获取配方时获得喜欢的次数。但是它返回一个空对象。

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

  return likes.length;
});

1 个答案:

答案 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数组上。