Я работаю над приложением на 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 '
Заранее спасибо!