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