我想在我的应用程序中使用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
我正在使用节点v9
请帮忙 !
最佳答案
我认为您不需要对getIdByName函数进行异步处理,例如
serviceSchema.statics.getIdByName = function getIdByName (serviceName) {
this.findOne({name :serviceName }).exec().then(function(service){
return service._id
})
}
会没事的。
我认为这不是您的错误的根源。您的代码看起来还不错,否则它将在Node 8.9.4上为我运行,您的IDE可能会令人讨厌吗?当您没有选择正确的JavaScript版本时,我已经看到WebStorm会这样做。
当然,当您使用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关键字:
https://jsfiddle.net/u453mdkb/3/
关于node.js - 定义异步功能时,异步/等待 Node v9“意外 token 功能”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49180893/