как ждать результата асинхронной функции nodejs - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь освоить использование Mon goose обещаний с функциональностью async / await Node.js. Однако у меня есть проблемы со второй функцией «найти», потому что она связана с первой, я думаю, потому что у меня нет первого результата поиска. Как я могу дождаться ответа первой функции и затем выполнить вторую?

exports.permissions_Check2 =  async function(params){
  const Sessioni = require('../models/Sessioni');
  const Permessi = require('../models/Permessi');
  const express = require ('express');
  var token= params['Token'];
  var tabelle = params['Tabelle'];
  var DataSession= [];
  var out;
  try{
  const sessioni = await Sessioni.findOne({token: token}).exec();
  const permessi =  await Permessi.findOne({IDGruppo: sessioni.IDGruppo}).exec();

  out={
    IDAccesso: sessioni._id,
    IDUser: sessioni.IDUser,
    IDGruppo:sessioni.IDGruppo,
    Permessi: permessi
  }
  return out;
  } catch (err){
    return  err;
  }

  return  out;

}

вывод: {IDAccesso: "ehwuhf7867tgyb", IDUser: 1, IDGruppo: 1, Permessi : нуль}

1 Ответ

0 голосов
/ 21 февраля 2020

А как насчет использования обещаний? Это будет выглядеть как

  Sessioni.findOne({token: token})
  .exec()
  .then(sessioni => {
    Permessi.findOne({IDGruppo: sessioni.IDGruppo})
    .exec()
    .then(permessi => {
      out={
        IDAccesso: sessioni._id,
        IDUser: sessioni.IDUser,
        IDGruppo:sessioni.IDGruppo,
        Permessi: permessi
      }
     }).catch(e => throw e);
  }).catch(e => throw e)

Я не уверен, какую БД вы используете, но надеюсь, что это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...