为什么我的Async和Await仍然不执行序列执行工作

时间:2018-11-15 01:59:34

标签: javascript angularjs node.js async-await

我是Node.js的新手,不确定我是否正确理解Async / Await。这就是我想要做的

我正在将值传递给函数,并且期望它像

一样工作

步骤1.将两个值相加  步骤2。根据步骤1的值从数据库中获取文档  步骤3.返回从步骤2获取的文档。

但是我看到的结果是

步骤1.将两个值相加 步骤2.在数据库查询运行时返回未定义 步骤3.完成运行查询

如何从中获得所需的输出。

var someFunction = async (a,b)=>{
  var k;
  try{
    k = a+b; 
  }catch(err){
    return(err);
  }

  var document;
  try{
    document = await db.collection(somecollection).findOne({_id:k})
  }catch(err){
    return(err);
  }
  return(document);
}

someFunction(4,5).then((result)=>{
  console.log(result);
});

1 个答案:

答案 0 :(得分:1)

如果找不到匹配项,则

findone可能返回undefined findOne returns undefined on the server

在第一个try...catch块中,为什么还要担心添加两个变量的异常?永远不会导致javascript错误。

还要确保您正确传递_id以找到一个,Mongo使用UUID来计算_id,我认为添加+ b不会返回该值