【发布时间】:2021-03-10 01:33:16
【问题描述】:
我想用这样的方式创建一个数组
[{
"item":"item1",
"subitem":[{"subitem1","subitem2"}]
},{
"item":"item2",
"subitem":[{"subitem3","subitem4"}]
}]
我已连接到 mysql RDS 并尝试执行一些查询。 我使用无服务器框架的 express js 代码如下:
app.get('/modules/all', function async(req, res) {
let data = await run();
res.send(data);
})
async function run() {
return new Promise((resolve, reject) => {
con.query('SELECT `module_name` FROM `module_master` GROUP BY `module_name`', (err, rowsmod) => {
if (err) throw reject(err);
var rowdata = [];
for (var j = 0; j < rowsmod.length; j++) {
var modulenames = rowsmod[j].module_name;
let resModule = await getSubmodule(modulenames);
console.log(resModule);
resModule = JSON.parse(resModule);
rowdata.push({
"module": modulenames,
"submodule": resModule
});
}
resolve(rowdata);
})
});
}
async function getSubmodule(modulenames) {
return new Promise((resolve, reject) => {
con.query('SELECT * FROM `module_master` WHERE `module_name` = ?', [modulenames], (err, rows) => {
if (err) throw reject(err);
resolve(rows);
});
})
};
await 获得的错误仅在 async 函数中有效,但 async 已经定义。为什么我会遇到这个问题?
E: \serverless\ index.js: 122
let data = await run();
^ ^ ^ ^ ^
SyntaxError: await is only valid in async function
at compileFunction( < anonymous > )
at wrapSafe(internal / modules / cjs / loader.js: 1053: 16)
at Module._compile(internal / modules / cjs / loader.js: 1101: 27)
at Object.Module._extensions..js(internal / modules / cjs / loader.js: 1157: 10)
at Module.load(internal / modules / cjs / loader.js: 985: 32)
at Function.Module._load(internal / modules / cjs / loader.js: 878: 14)
at Module.require(internal / modules / cjs / loader.js: 1025: 19)
at require(internal / modules / cjs / helpers.js: 72: 18)
at E: \serverless\ express\ aipersonalization\ node_modules\ serverless - offline\ dist\ lambda\ handler - runner\ in -process - runner\ InProcessRunner.js: 145: 133
at processTicksAndRejections(internal / process / task_queues.js: 97: 5)
at InProcessRunner.run(E: \serverless\ express\ aipersonalization\ node_modules\ serverless - offline\ dist\ lambda\ handler - runner\ in -process - runner\ InProcessRunner.js: 145: 9)
【问题讨论】:
-
function async(req, res)->async function(req, res) -
这可行,但再次卡在这部分----> let resModule = await getSubmodule(modulenames);
-
离线:失败:await 仅在异步函数中有效 E:\serverless\express\aipersonalization\index.js:134 let resModule = await getSubmodule(modulenames); ^^^^^ SyntaxError: await 仅在异步函数中有效
-
@AmeerHamza don't use
asyncexecutors for promises
标签: javascript node.js express asynchronous async-await