【发布时间】:2017-08-27 08:16:39
【问题描述】:
我正在尝试编写一个节点模块来处理我的各种数据库调用。 我想尽可能使用 async/await,但我遇到了一些问题。
我一直在使用 Promise,并且可以很好地导出这些函数。 示例:
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();
它给了我:
语法错误:意外的标识符
在数据库名称上(如果我只使用 promise 函数,使用 then() 可以正常工作。)
也许我的谷歌技能很糟糕,但在这个问题上,我没有设法用谷歌搜索任何我可以使用的东西。
究竟如何在我的模块中创建一个可以在其他地方等待的异步函数?
【问题讨论】:
标签: node.js async-await