in source/services/api/registration/lib/registration.js [72:120]
async _getRegistrationPage(userId, lastevalkey) {
let registrations = [];
let _keyConditionExpression = 'userId = :uid';
let _expressionAttributeValues = {
':uid': userId,
};
const params = {
TableName: process.env.REGISTRATION_TBL,
IndexName: 'userId-deviceName-index',
KeyConditionExpression: _keyConditionExpression,
ExpressionAttributeValues: _expressionAttributeValues,
Limit: 100,
};
if (lastevalkey) {
params.ExclusiveStartKey = lastevalkey;
}
let docClient = new AWS.DynamoDB.DocumentClient(this.dynamoConfig);
try {
let result = await docClient.query(params).promise();
registrations = [...result.Items];
// If there is more data, load more data and append them to registrations
if (result.LastEvaluatedKey) {
let moreResult = await this._getRegistrationPage(userId, result.LastEvaluatedKey);
registrations = [...registrations, ...moreResult];
}
return Promise.resolve(registrations);
} catch (err) {
if (err.message) {
return Promise.reject(err);
}
Logger.error(Logger.levels.INFO, err);
Logger.error(
Logger.levels.INFO,
`[RegistrationQueryFailure] Error occurred while attempting to retrieve registrations from registration table with lastEvaluatedKey ${lastevalkey}.`,
);
return Promise.reject({
code: 500,
error: 'RegistrationQueryFailure',
message: `Error occurred while attempting to retrieve registrations.`,
});
}
}