如何从节点模块导出asynchronousfunction

我正在尝试编写一个节点模块来处理我的各种数据库调用。 我想尽可能使用asynchronous/等待,但是我遇到了一些问题。

我一直在使用承诺,并导出这些function很好。 例:

function GetUsernames() { return new Promise(function (resolve, reject) { sql.connect(config).then(function () { new sql.Request() .query("SELECT [UserName] FROM [Users] ORDER BY [LastLogin] ASC").then(function (recordset) { resolve(recordset); }).catch(function (err) { reject(err); }); }); }); } 

然后我输出以下内容:

 module.exports = { GetUsernames: GetUsernames, GetScopes: GetScopes, UpdateToken: UpdateToken, SetOwner: SetOwner }; 

但是,如何使用async函数来执行node7中的async / await?

我还只是答应了吗? 我试过这样做,但是当我在代码中调用它时,它不起作用。

 const db = require("dataprovider"); ... var result = await db.GetUsernames(); 

它给了我:

SyntaxError:意外的标识符

在数据库名称(工作正常,如果我只是使用承诺函数,然后()。)

也许我的谷歌技能是可怕的,但我还没有设法谷歌任何我可以使用,在这个问题上。

在我的模块中,我怎样才能做一个asynchronous函数,以便我可以在别处等待?

要打开await关键字,你需要把它放在一个asynchronous函数中。

 const db = require("dataprovider"); ... let result = getUserNames(); async function getUserNames() { return await db.GetUsernames(); } 

有关更多信息,请参阅http://javascriptrambling.blogspot.com/2017/04/to-promised-land-with-asyncawait-and.html

此外,就像一个参考,它是一个代码约定,以小写字母开始函数,除非你从它返回一个类。