【发布时间】:2020-05-19 18:39:17
【问题描述】:
我正在尝试停止 sql 实例列表,因为它是异步的,我正在使用 Promise.all
代码失败:
TypeError: (intermediate value) is not iterable
at Promise.all.sqlInstancesList.map (/workspace/index.js:40:53)
at process._tickCallback (internal/process/next_tick.js:68:7)
我做错了什么?
这是代码:
const { google } = require('googleapis')
const { auth } = require('google-auth-library')
const sqladmin = google.sqladmin('v1beta4')
exports.stopSqlInstance = async (event, context, callback) => {
try {
const authRes = await auth.getApplicationDefault()
var sqlInstancesList = ["my-instance-name"];
await Promise.all(
sqlInstancesList.map(async (instance) => {
console.info("stopping " + instance);
var request = {
auth: authRes.credential,
project: "my-project-id",
instance: instance,
requestBody: {
"settings": {
"activationPolicy": "NEVER"
}
}
}
const [operation] = await sqladmin.instances.patch(request);
// Operation pending
return operation.promise();
})
);
// Operation complete. Instance successfully stopped.
const message = `Successfully stopped instance(s)`;
console.log(message);
callback(null, message);
} catch(err) {
console.error(err);
callback(err);
}
}
【问题讨论】:
-
var sqlInstancesList = ["my-instance-name"];是您的实际代码吗? -
是的,这是出于调试目的,在我设法完成这项工作后,我将从输入中获取实例列表(列表包含一个或多个)
-
如果您仍然在调试,请尝试记录/检查
sqlInstancesList.map(…)调用的结果。
标签: javascript node.js