У меня есть функция ниже, которая берет данные из DynamoDB и затем возвращает true или false при оценке условия. Эта функция будет использоваться для простой проверки и определения высоты пользователя для доступа к данным и еще много чего.
Как я могу заставить эту функцию делать что-то вроде:
var auth = aliasHasRole('foo','bar')
console.log(auth) // prints value passed down by aliasHasRole().
I решил, что мне нужно объявить его как async
и добавить await
перед возвращением, но не повезло, затем сделал aliashHasRole('foo','bar').then( (x) => { auth = x})
, но он возвращает undefined
.
Вот полный код:
var AWS = require('aws-sdk');
AWS.config.update({
region: 'us-west-2',
accessKeyId: "xxx",
secretAccessKey: "xxx",
});
const docClient = new AWS.DynamoDB.DocumentClient();
function aliasHasRole(an_alias, a_role) {
const params = {
TableName: 'xxx',
KeyConditionExpression: '#alias= :alias AND #Role= :Role',
ExpressionAttributeNames: {
'#alias': 'alias',
'#Role': 'Role'
},
ExpressionAttributeValues: {
':alias': an_alias,
':Role': a_role,
}
};
docClient.query(params).promise()
.then(
(data) => {
//this line below returns true or false, how can I get I pass this value so I can return it from the aliasHasRole as true or false?
console.log(data.Items.length > 0 && data.Items[0].alias === an_alias && data.Items[0].Role === a_role ? true : false);
return data.Items.length > 0 && data.Items[0].alias === an_alias && data.Items[0].Role === a_role ? true : false;
})
.catch((err) => {
console.log(err)
})
};
var auth;
aliasHasRole("xxx","TeamManager");//should return true or false just like it logs it to the console.
//Do something to assign functions value to var auth.
console.log(auth) //print value passed by function...
//How can I assign this value to a variable? as in var auth = aliasHasTole('foo','bar') // auth is now true or false.