await действителен только в asyn c ошибка функции - Azure функция - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь заставить мой логин api работать внутри функции azure, но он все время говорит await is only valid in async function. Это asyn c функция, поэтому я просто запутался.

Эта строка const user = await db.collection('users').findOne({ email: userLoggingIn.email })

выдает ошибку.

const jwt = require("jsonwebtoken");
const bcrypt = require("bcrypt");


var MongoClient = require('mongodb').MongoClient;



module.exports = async function (context, req) {


  MongoClient.connect(process.env.CosmosDBConnectionString, (err, client) => {


    let userLoggingIn = ({ email, password } = req.body);

    console.log("userLoggingIn");
    console.log(userLoggingIn.email);
    let send = response(client, context);

    if (err) send(500, err.message);


    console.log("DBNAME: " + process.env.dbName);
    let user;
    let db = client.db(process.env.dbName);


   const user = await db.collection('users').findOne({ email: userLoggingIn.email })



    console.log("USER");
    console.log(user);


  let userName= user.instagramName;
    if (!user) {

      send(401, { message: "Auth failed" });

    }

    const { username } = user;
    console.log("PASSWORD");
    console.log(context.req.password);
    console.log(user.password);
    const goodPassword = bcrypt.compareSync(context.req.password, user.password);

    if (!goodPassword) {
      return send(401, { message: "Auth failed" });

    }

    const token = jwt.sign(
      {
        email: user.email,
        userId: user._id,
        username: userName
      },
      "secret_this_should_be_longer",
      { expiresIn: "1h" }
    );

    context.res = { status: 200, token: token, expiresIn: 3600, userId: user._id, username: username};


  })
}




function response(client, context) {
  return function (status, body) {
    context.res = {
      status: status,
      body: body
    };

    client.close();
    context.done();
  };
}

1 Ответ

1 голос
/ 10 марта 2020
MongoClient.connect(process.env.CosmosDBConnectionString, (err, client) => {

в этой строке, анонимная функция обратного вызова, принимающая err и client в качестве параметра, является функцией, которая должна быть асинхронной c

MongoClient.connect(process.env.CosmosDBConnectionString, async (err, client) => {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...