Проблема заключается в том, что вызов docClient
использует обратный вызов, как показано в этой строке:
docClient.query(params, function(err, data) { ... })
Это означает, что передаваемая вами функция не вызывается до завершения операции, что можетчерез некоторое время.
Вы можете сказать библиотеке обернуть ее в обещание, а затем ждать:
const data = await docClient.query(params).promise()
if (data.Count === 0) {
//We did not find this ID in the db so we can add it.
console.log('The team doesn\'t exist')
} else {
data.Items.forEach(function (item) {
console.log('Team ' + item.teamID + ' ' + item.teamName + ' found in the database')
})
}
Редактировать: В настоящее время вы упаковываете всю свою функцию в обещание,но поскольку мы изолируем это просто обратным вызовом, вы, вероятно, захотите заменить его на что-то похожее на:
async function readMatchData () {
for (var jsonInfo of JSON.Feed.MatchData) {
var matchID = jsonInfo['@attributes'].matchID
console.log('matchID: ' + matchID)
var homeTeamID = team['@attributes'].homeTeamID
var params = {
TableName: 'Teams',
KeyConditionExpression: '#teamID = :teamID',
ExpressionAttributeNames: {
'#teamID': 'teamID'
},
ExpressionAttributeValues: {
':teamID': homeTeamID
},
ReturnConsumedCapacity: 'TOTAL'
}
const data = await docClient.query(params).promise()
if (data.Count === 0) {
//We did not find this ID in the db so we can add it.
console.log('The team doesn\'t exist')
} else {
data.Items.forEach(function (item) {
console.log('Team ' + item.teamID + ' ' + item.teamName + ' found in the database')
})
}
}
return 'done'
}
РЕДАКТИРОВАТЬ: Кредит HMilbradt за указание на библиотеку имеет встроенную функцию обещания