#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()
}
Я ссылался на документацию здесь (а также на другие вещи), и я, похоже, не могу понять, что я делаю не так-похоже, он должен возвращать номер?
Спасибо!