Mongoose упаковывает каждый объект в массив

#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 🔥