var params = { TableName: 'MYTABLE', FilterExpression: 'contains (myKey , :query)', ExpressionAttributeValues: { ':query': query } } var dynamoScan = new Promise(function(resolve, reject) { var results = [] var onScan = (err, data) => { if (err) { return reject(err) } results = results.concat(data.Items) if (typeof data.LastEvaluatedKey != 'undefined') { params.ExclusiveStartKey = data.LastEvaluatedKey docClient.scan(params, onScan) } else { return resolve(results) } } docClient.scan(params, onScan) }) dynamoScan .then((results) => { res.json(results) }) .catch((err) => { Logger.error(err) return next(err) })