我想在我的应用程序中使用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
请帮忙!
答案 0 :(得分:1)
我认为你不需要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;
})
}
这使得承诺链保持完整。
语法:
异步函数getVariables(){
无论如何都是正确的。
如果您的IDE定位的是较旧版本的JavaScript,则可能不允许您使用async关键字。
尝试这个小提示以查看正在使用的async关键字: