我对ExpressJS很陌生,所以我有一个关于我的代码的问题。
router.post("/create", (req: Request, res: Response) => {
pruefungController.create(req, res);
});
public async create(req: Request, res: Response): Promise<void> {
const pruefung = new Pruefung({
fach: req.body.fach,
datum: req.body.datum,
raum: req.body.raum
});
await pruefung.save();
res.send(pruefung);
}
是否足以声明创建方法为异步,或者我是否必须声明回调也像这样异步?
router.post("/create", async (req: Request, res: Response) => {
await pruefungController.create(req, res);
});
在我看来,等待。save()方法的动作应该足够了,但我不知道Express如何处理传递给router.post()方法的方法:
唯一需要将函数声明为async
的情况是在其中使用await
关键字。
唯一需要使用await
关键字的时候是如果你需要一个函数等待一个承诺在继续之前解决。
传递给post
的函数在调用pruefungController.create
后不做任何事情。也没有任何东西关心它返回的值。你不需要在那里使用await
,所以你不需要将其设置为async
。
对于这个问题,该函数不做任何除了调用另一个函数具有相同的参数,所以你可以摆脱它:
router.post("/create", pruefungController.create);