Обновился до Mongoose 5.12, и теперь я не могу найтиOneAndUpdate с оператором $push
Я только что обновился до Mongoose 5.12 с 5.11 и использую Typescript. У меня есть эта схема
const MyFileSchema = new Schema<IMyFile>({
objectID: { type: String, required: true },
attachments: { type: Array, required: false }
}, { collection: 'my_file' });
Теперь этот findOneAndUpdate внезапно не компилируется ...
await MyFile.findOneAndUpdate(
{ objectID },
{
$push: {
attachments: { fileName: fileName, id: fileID },
},
},
);
жаловаться ...
Type '{ attachments: { fileName: string; id: string; }; }' is not assignable to type 'PushOperator<_AllowStringsForIds<LeanDocument<any>>>'.
Type '{ attachments: { fileName: string; id: string; }; }' is not assignable to type 'NotAcceptedFields<_AllowStringsForIds<LeanDocument<any>>, readonly any[]>'.
Property 'attachments' is incompatible with index signature.
Type '{ fileName: string; id: string; }' is not assignable to type 'undefined'.
Есть ли другой способ написать вышеизложенное, чтобы избежать этой ошибки компиляции, которой не было, когда я использовал Mongoose 5.11?
1 ответ
await MyFile.findOneAndUpdate(
objectID ,
{
$push: {
attachments: { fileName: fileName, id: fileID },
},
},
);
попробуйте с этим, это сработает.