TypeScript: метод набора MongoDB не существует - PullRequest
0 голосов
/ 01 августа 2020

Я работаю над приложением на TypeScript и впервые получаю эту ошибку. Я не могу использовать метод set на экземпляре модели .

Вот модель:

import mongoose from 'mongoose';
import { OrderStatus } from '@karantickets/common';
import { updateIfCurrentPlugin } from 'mongoose-update-if-current';

interface OrderAttrs {
    id: string;
    version: number;
    userId: string;
    price: number;
    status: OrderStatus;
};

interface OrderDoc extends mongoose.Document {
    version: number;
    userId: string;
    price: number;
    status: OrderStatus;
};

interface OrderModel extends mongoose.Model<OrderDoc> {
    build(attrs: OrderAttrs): OrderDoc;
};

const orderSchema = new mongoose.Schema({
    userId: { type: String, required: true },
    price: { type: Number, required: true },
    status: { type: String, required: true }
}, {
    toJSON: {
        transform(doc, ret) {
            ret.id = ret._id;
            delete ret._id;
        }
    }
});
orderSchema.set('versionKey', 'version');
orderSchema.plugin(updateIfCurrentPlugin);

orderSchema.statics.build = (attrs: OrderAttrs) => {
    return new Order({
        _id: attrs.id,
        version: attrs.version,
        userId: attrs.userId,
        price: attrs.price,
        status: attrs.status
    });
};

const Order = mongoose.model<OrderDoc, OrderModel>('Order', orderSchema);
export { Order };

И вот где Я использую метод:

export class OrderCancelledListener extends Listener<OrderCancelledEvent> {
    queueGroupName = queueGroupName;
    subject: Subjects.OrderCancelled = Subjects.OrderCancelled;
    async onMessage(data: OrderCancelledEvent['data'], msg: Message) {
        const order = Order.findOne({
            _id: data.id,
            version: data.version - 1
        });
        if (!order) throw new Error('Order not found');
        order.set({  // < -------------------------------- ERROR !!
            status: OrderStatus.Cancelled
        });
        msg.ack();
    }
}

Ошибка : Свойство 'set' не существует для типа 'DocumentQuery '

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...