Javascript 异步等待未按预期等待

Javascript 异步等待未按预期等待,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,我发誓我让这个工作,然后改变了一些东西,不能完全得到它。 我有一个express控制器,它有以下代码: router.post('/', (req, res, next) => { myModule.organizationLookup(req.body.domain).then((data) => { res.status(200).send(data); }) }); 然后我的问题代码:myModule.js如下所示: myModule.organization

我发誓我让这个工作,然后改变了一些东西,不能完全得到它。 我有一个express控制器,它有以下代码:

router.post('/', (req, res, next) => {
  myModule.organizationLookup(req.body.domain).then((data) => {
    res.status(200).send(data);
  })
});
然后我的问题代码:myModule.js如下所示:

myModule.organizationLookup = (domain) => {
  async function getOrganization(domain) {
    try {
      return await thirdpartySDK.Company.find({domain: domain});
    }
    catch (err) {
      console.log(err)
    }
  }
  getOrganization(domain);
};
它总是在控制器中抛出错误:
TypeError:无法读取未定义的属性“then”

其中有一个多余的函数,其结果不返回。只需删除函数并编写

myModule.organizationLookup = async function getOrganization(domain) {
  try {
    return await thirdpartySDK.Company.find({domain: domain});
  } catch (err) {
    console.log(err)
  }
};

这是因为您没有向organizationLookup返回任何内容,而是在getOrganizationdomain内部调用,但没有返回该值。此外,如果要返回承诺,我不认为使用async/await有什么意义。实际代码更复杂,对于此postRight来说过于简化,祝你好运,我发布了我的答案。@Gerardo-async/await是Promise的语法糖,所以你关于使用async/await的意义的陈述看起来很奇怪,你有一个超级函数名,你没有引用它!async domain=>就足够了。@Crowes Right:-我想可能出于某种原因,OP想要命名函数,他说他的实际代码更复杂。