繁体   English   中英

Mongoose 添加异步虚拟字段

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM