在节点中执行顺序

时间:2018-04-28 20:51:27

标签: node.js asynchronous busy-waiting

我在nodejs中有一个函数,其指令必须按顺序执行。我已经尝试了节点8和promises的本机选项(async和await)。我不能让他在返回之前等待FindOne的结果。

module.existe = function(usr, pass) {

  (async() => {

    await coleccion.findOne(
      { usr: usr, pass: pass },
      (err, result) => {
        return (result == null)? false : true;
      }
    );

  })();
}

对mongo的查询很好,我可以恢复文件,但总是在返回后,所以验证不起作用。该函数应该做的是检查数据库中是否已存在集合{usr,key}

可能是什么?

1 个答案:

答案 0 :(得分:1)

generalhenry已经在评论中回答了

完全放弃它们:

const { promisify } = require('util');

module.existe = function (usr, pass) {
    const findOnePromise = promisify(coleccion.findOne);

    (async () => {
        const result = await findOnePromise({ usr: usr, pass: pass });
        return (result === null) ? false : true;
    })();
}

文档:await - util.promisify