#javascript #async-await #try-catch
Вопрос:
затем, запустив внутри асинхронную функцию без блока catch или отклонив обещание, которое не было обработано с помощью .catch(). чтобы завершить процесс узла при необработанном отклонении обещания, используйте флаг cli --unhandled-rejections=strict
(см. [
const router = require("express").Router();
const User = require("../modles/User");
router.get("/register", async (req,res) => {
const user = await new User({
username:"jhon",
email:"jhon@gmail.com",
password:"123456",
})
await user.save()
res.send("ok")
});
module.exports = router;
]1 (идентификатор отклонения: 1) (узел:13400) [dep0018] предупреждение об устаревании: необработанные отклонения обещаний считаются устаревшими. в будущем отказы в обещаниях, которые не будут обработаны, приведут к прекращению node.js процесс с ненулевым кодом выхода.
Комментарии:
1. оберните код внутри функции обработчика маршрута в
try-catch
блок. Кроме того, вам это не нужноawait
new User(....)
. Этоawait
нужно только передuser.save()
Ответ №1:
вам нужно только ждать и ловить. Первый из них бесполезен, потому что вы инициализируете свой класс.
Так что сделай это :
const router = require("express").Router();
const User = require("../modles/User");
router.get("/register", async (req,res) => {
const user = new User({
username:"jhon",
email:"jhon@gmail.com",
password:"123456",
})
await user.save().catch(e => e) // Return the errors in the void. You can console.log it.
res.send("ok")
});
module.exports = router;