сообщение извлечения findByIdAndRemove () - PullRequest
0 голосов
/ 18 марта 2020

Следующий код создает консольное сообщение:

Сообщение:
(узел: 5700) Предупреждение об устаревании: Пн goose: findOneAndUpdate() и findOneAndDelete() без параметра useFindAndModify, установленного в false, устарели. См .: https://mongoosejs.com/docs/deprecations.html# -findandmodify-

Код:

app.post("/delete", (req, res) =>{
  const checkedItemId = req.body.checkbox;

  Item.findByIdAndRemove(checkedItemId, (err) =>{
    if (!err) {
      console.log("Success!");
    } else {
      console.log("err");
    }
  });
    res.redirect("/");
});

Я понимаю, что это связано с амортизацией и методом, используемым в фоновом режиме, но я не совсем понимаю, как с этим бороться. Это не сломает приложение, но все же, я хотел бы понять, почему это происходит ** s.

Я попробовал mon goose документы, но я все еще в замешательстве. Любая помощь приветствуется.

https://mongoosejs.com/docs/deprecations.html

Часть в findAndModify - это то, что я нашел релевантным в документах

Я хотел бы не получить сообщение. Есть ли вариант, который следует пропустить?

1 Ответ

1 голос
/ 18 марта 2020

избавьтесь от устаревших:

mongoose.set('useNewUrlParser', true);
mongoose.set('useFindAndModify', false);
mongoose.set('useCreateIndex', true);
mongoose.set('useUnifiedTopology', true);

и исправьте код, не более findAndModify методов стиля - что правильно, так как если вы хотите удалить - так deleteOne, deleteMany. Я не вижу причин для поиска и удаления, если Вам все равно, существует он или нет.

об устареваниях, прочитанных в РЕЗЮМЕ здесь

app.post("/delete", async (req, res) =>{
  try {
    const checkedItemId = req.body.checkbox;
    await Item.deleteOne({_id: checkedItemId});
  }
  catch (error) {
    console.error(error);
  }
  finally {
    res.redirect("/");
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...