Как мне использовать значение виртуального Мангуста?

#mongoose #mongoose-schema

Вопрос:

У меня есть схема пользователя, содержащая корзину, которая представляет собой массив объектов, содержащих идентификатор jamId из схемы Jam и количество. Я пытаюсь создать виртуальный, который возвращает общую стоимость покупки.

 const User = new Schema(
  {
    cart: [
      {
        jamId: { type: Schema.Types.ObjectId, refs: "jams" },
        quantity: { type: Number, required: true },
      },
    ],
  },
  { timestamps: true, toJSON: { virtuals: true }, toObject: { virtuals: true } }
)

User.virtual('subtotal').get(async function () {
  let total = 0
  for (let i = 0; i < this.cart.length; i  ) {
    const jam = await Jam.findById(this.cart[i].jamId)
    total  = Number(this.cart[i].quantity) * Number(jam.price)
  }
  //console.log(total)
  return total
})
 

Когда я регистрирую общее количество внутри виртуальной функции, я получаю правильное общее количество. Однако, когда я пытаюсь войти в user.subtotal, я получаю пустой объект. Я зарегистрировал пользователя, и, похоже, все в порядке.

 useEffect(() => {
  const fetchUser = async () => {
    const user = await getUser(props.user.id)
    //this gives an empty object instead of a number
    console.log(user.subtotal)
  }
  fetchUser()
}
 

Я ссылался на документацию здесь (а также на другие вещи), и я, похоже, не могу понять, что я делаю не так-похоже, он должен возвращать номер?

Спасибо!