Search code examples
javascriptnode.jstypescriptexpressasync-await

Express Async Method in Method


I´m quite new to ExpressJS, so i have a question about my Code.

    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);
    }

Is it enough to declare the create method as async or do i have to declare the callback also as async like this?

router.post("/create", async (req: Request, res: Response) => {
    await pruefungController.create(req, res);
});

In my opinion it should be enough to just await the action of the .save() method, but i don´t know how Express handles the method passed into the router.post() method :(


Solution

  • The only time you need to declare a function as async is if you use the await keyword inside it.

    The only time you need to use the await keyword is if you need a function to wait for a promise to resolve before continuing.

    The function you pass to post doesn't do anything after calling pruefungController.create. Nor does anything care about the value it returns. You don't need to use await there so you don't need to make it async.

    For that matter, that function doesn't do anything except call another function with the same arguments, so you can get rid of it:

    router.post("/create", pruefungController.create);