Экспресс: использование await до того, как bcrypt.compare выдаст ошибку - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь использовать bcrypt для сравнения пароля пользователя с сохраненным паролем. Но Экспресс выдает ошибку, если я использую await перед bcrypt.compare

Вот код:

app.post ('/users/login', (req, res) => {
    const user = users.find(user=> user.name === req.body.user)
    if (user == null) {
        return res.status(400).send('Can Not find user');
    } else {
        try{
            if ( await bcrypt.compare(req.body.password, user.password)) {
                res.send("Success");
            } else {
                res.send("Incorrect PAssword");
            }
        } catch {
            return res.status(500).send('Some Error has occurred');
        }
    }
});

Я получаю эту ошибку:

C:\Data\Ashish\projects\jwtAuthentication\app.js:32
            if ( await bcrypt.compare(req.body.password, user.password)) {
                       ^^^^^^

SyntaxError: Unexpected identifier
    at Module._compile (internal/modules/cjs/loader.js:723:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
[nodemon] app crashed - waiting for file changes before starting...

Пожалуйста, помогитечтобы найти ошибку ..

С уважением, Ашиш

1 Ответ

5 голосов
/ 31 октября 2019

Вы забыли добавить асинхронную функцию для функции обратного вызова.

app.post ('/users/login', (req, res) => {

Должно быть:

app.post ('/users/login', async (req, res) => {

Ожидание будет работать толькос асинхронными функциями.

Отличается от хромированной консоли. В консоли вы можете напрямую использовать ключевое слово await, но в случае с node.js вам необходимо указать асинхронную природу родительской функции, в которой вы хотите использовать await.

Для получения дополнительной информации вы можете обратиться к эта ссылка .

...