#javascript #mongodb #typescript #mongoose
#JavaScript #MongoDB #typescript #mongoose
Вопрос:
Сообщество! У меня возникла некоторая проблема с mongoose. Он добавляет массив массивов в базу данных вместо массива объектов и упаковывает каждый объект в массив. Что происходит не так?
Итак, я создаю PaymentMethod, установленный Array<IPayment>
в fee
export class PaymentMethod{
@prop({ required: true, unique: true })
public name: String
@prop({ required: true })
public details: String
@prop({ required: true })
public inlineMenu: String
@prop({ required: true })
public callbackData: String
@prop({ required: true })
public fee: Array<IPaymentFee>
@prop({ default: false })
public available: Boolean
}
IPaymentFee
Интерфейс:
export interface IPaymentFee {
from: Number
type: 'percent' | 'fixed'
amount: Number
extra?: Number | 0
}
После этого я создаю новый способ оплаты:
const createdPayment = await PaymentMethodModel.create({
name: 'xbank',
details: '43284809328432',
inlineMenu: 'menu_payment_xbank',
callbackData: 'client_payment_xbank',
available: true,
fee: [
{ from: 0, type: 'fixed', amount: 200 },
{ from: 1000, type: 'percent', amount: 20, extra: 150 },
{ from: 1500, type: 'percent', amount: 17 },
{ from: 2000, type: 'percent', amount: 15 },
{ from: 3500, type: 'percent', amount: 13 },
{ from: 10000, type: 'percent', amount: 12 },
{ from: 20000, type: 'percent', amount: 11 },
{ from: 30000, type: 'percent', amount: 10 },
]}
)
Но в итоге я получаю неверный результат с массивом массивов вместо массива объектов —
скриншот здесь
Что я делаю не так? Спасибо большое заранее!
Ответ №1:
Решил эту проблему, добавив метод .lean() ко всем методам find / findOne 🔥