我正在通过以下调用使用aws dynamodb:
const params: DynamoDB.DocumentClient.QueryInput = {
TableName: tableName,
KeyConditionExpression: '#hashKey = :hashValue AND #rangeKey = :rangeValue',
ExpressionAttributeNames: {
'#hashKey': hashKey,
'#rangeKey': rangeKey
},
ExpressionAttributeValues: {
':hashValue': hashValue,
':rangeValue': rangeValue
},
IndexName: indexName,
Limit: fetchLimit,
ScanIndexForward: true,
ProjectionExpression: projectionItems.concat([documentKey])
}
// These 2 ridiculous lines are necessary to get rid of error
if (!params.ExpressionAttributeNames) params.ExpressionAttributeNames = {}
if (!params.ExpressionAttributeValues) params.ExpressionAttributeValues = {}
if (beforeDateCondition) {
params.FilterExpression = '#updatedAt < :updatedAt'
params.ExpressionAttributeNames['#updatedAt'] = 'updatedAt'. // ERROR HERE
params.ExpressionAttributeValues[':updatedAt'] = beforeDateCondition // ERROR HERE
}
如果我在实际定义ExpressionAttributeNames
和ExpressionAttributeValues
之后没有检查并定义它们,则TS会在最后两行中给我错误,提示它们可能未定义。
我知道不需要ExpressionAttributeValues
和ExpressionAttributeNames
(类型为ExpressionAttributeNames?: ExpressionAttributeNameMap;
),但是如果没有以下方法,我该如何解决:
DynamoDB.DocumentClient.QueryInput
定义这里合适的方法是什么?