Обновился до 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 },
      },
    },
  );

попробуйте с этим, это сработает.

Другие вопросы по тегам