Я настраиваю API для сканирования таблицы в DynamoDB, используя функцию Async с Node.js 8.10. Когда я вызываю метод сканирования, я использую обещание AWS SDK 2.3, чтобы убедиться, что запрос выполнен. Однако я хочу вернуть пользовательский JSON с информацией о коде состояния и в теле данных, полученных из базы данных.
Я использую отдельную асинхронную функцию для обещания. Эта функция получает пользовательский ввод от функции exports.handler
. Я создаю массив параметров с информацией для запроса и, наконец, вызываю функцию сканирования, чтобы выполнить запрос к таблице в качестве обещания. Наконец, в рамках обещания я создаю новую переменную с информацией, которую я хочу вернуть, но даже если я верну переменную, она всегда вернет обещание.
const paramQuery = async () => {
return await paramQuery();
}
const paramQuery = async () => {
let params = {
TableName: process.env.TABLE_NAME;
};
var queryParams = documentClient.scan(params).promise();
queryParams.then(function(data) {
let response = {
"statusCode": 200,
"body": (data.Items)
}
return response;
}).catch(function(err){
console.log(err);
});
return queryParams;
}
// Expected result:
Response:
{
"statusCode": 200,
"body": [{
"ParameterName": "Name",
"ParameterValue": "Value"
}, {
"ParameterName": "Name",
"ParameterValue": "Value"
}]
}
// Current result:
Response:
{
"Items": [
{
"ParameterName": "Name",
"ParameterValue": "Value"
},
{
"ParameterName": "Name",
"ParameterValue": "Value"
}
],
"Count": 2,
"ScannedCount": 2
}
Я пытался найти похожие вопросы, но не нашел ни одного, который бы точно касался моей проблемы. В идеале следует избегать явных вызовов resolve
или reject
.