如何在data.Item.Name
之外获得docClient.get()
以便在其他功能中进一步使用它。
const docClient = new awsSDK.DynamoDB.DocumentClient();
docClient.get(dynamoParams, function (err, data) {
if (err) {
console.error("failed", JSON.stringify(err, null, 2));
} else {
console.log("Successfully read data", JSON.stringify(data, null, 2));
console.log("data.Item.Name: " + data.Item.Name);
}
});
// how can i use "data.Item.Name" here:
console.log(data.Item.Name);
return handlerInput.responseBuilder
.speak(data.Item.Name)
.getResponse();
答案 0 :(得分:1)
欢迎使用异步javascript。
您可以选择以下任一方式:
我将给出async / await选项的示例,但是您将需要在代码的其他区域进行一些重构以支持此操作。
async function wrapper() {
const docClient = new awsSDK.DynamoDB.DocumentClient();
docClient = require('util').promisify(docClient)
var data = await docClient(dynamoParams);
console.log(data.Item.Name);
return handlerInput.responseBuilder
.speak(data.Item.Name)
.getResponse();
}
我假设您的代码位于名为wrapper
的函数中。请注意,您需要为此功能添加async
关键字。
它现在还返回一个诺言,因此要从wrapper
获取返回值,您需要await
(在调用它的代码部分中)。这意味着您还需要将async
关键字添加到顶级函数中……依此类推。