У меня есть функция, которая получает некоторые данные из DynamoDB, используя docClient.query (). Я могу получить данные и распечатать их на консоли, например, console.log(data))
, но если я пытаюсь return data
, я всегда получаю неопределенное значение.
Я подумал, что function (err,data){ ... }
- это обратный вызов функции query()
, и надеялся, что он подождет, пока значение будет доступно, прежде чем вернуться.
Очевидно, что я новичок с AWS SDK и asyn c функциями, не могу найти документацию, которая использовала return
так, как мне нужно.
Мне просто нужен aliasHasRole
, чтобы вернуть isAuthorized
JSON, чтобы я мог использовать его в другом месте вне функции.
function aliasHasRole(an_alias, a_role) {
const params = {
TableName: 'xxxxxxx',
KeyConditionExpression: '#alias= :alias AND #Role= :Role',
ExpressionAttributeNames: {
'#alias': 'alias',
'#Role': 'Role'
},
ExpressionAttributeValues: {
':alias': an_alias,
':Role': a_role,
},
};
docClient.query(params, function (err, data) {
if (err) {
console.log("Error when attempting table query, see below:\n\n" +
JSON.stringify(err, null, 2));
return err;
} else {
var isAuthorized = data.Count === 1 && data.Items[0].alias === an_alias && data.Items[0].Role === a_role ? true : false;
console.log(1,'Access', isAuthorized ? 'Granted' : 'Denied', 'for alias "' + an_alias + '".\n');
return isAuthorized; //always returns undefined
}
})
}
console.log(aliasHasRole("fooAlias","barRole")) // returns undefined.