如何等待异步函数nodejs的结果

时间:2020-02-19 17:36:57

标签: node.js express asynchronous mongoose

我试图摆脱使用Mongoose Promise与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:null}

1 个答案:

答案 0 :(得分:0)

如何使用Promises? 看起来像

  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)

我不确定您使用的是哪个数据库,但希望能对您有所帮助