我想在我的应用程序中使用 async/await,主要是为了查询我的数据库
我有这个功能:
async function getVariables() {
var id = await Service.getIdByName('JollyClick')
console.log(id)
}
应该称之为:
serviceSchema.statics.getIdByName = async function getIdByName (serviceName) {
this.findOne({name :serviceName }).exec().then(function(service){
return service._id
})
}
但我收到错误:
async function getVariables() {
^^^^^^^^
SyntaxError: Unexpected token function
我正在使用 Node v9
请帮忙!
最佳答案
我认为您不需要 getIdByName 函数上的异步,例如
serviceSchema.statics.getIdByName = function getIdByName (serviceName) {
this.findOne({name :serviceName }).exec().then(function(service){
return service._id
})
}
没问题。
不过,我认为这不是您错误的根源。你的代码看起来没问题,它在 Node 8.9.4 上为我运行,你的 IDE 会做一些烦人的事情吗?我见过 WebStorm 在您没有选择正确的 JavaScript 版本时执行此操作。
当然,当您使用await 调用函数时,您通常是使用返回promise 的函数来执行此操作。
所以我也会像这样更改 getIdByName:
serviceSchema.statics.getIdByName = function getIdByName (serviceName) {
return this.findOne({name :serviceName }).exec().then(function(service){
return service._id;
})
}
这使 promise 链保持完整。
语法:
异步函数 getVariables() {
无论如何都是正确的。
如果您的 IDE 针对旧版本的 JavaScript,它可能不允许您使用 async 关键字。
尝试这个 fiddle 来查看正在使用的 async 关键字:
关于node.js - 定义异步函数时的 async/await Node v9 "unexpected token function",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49180893/