【发布时间】:2022-02-10 00:12:59
【问题描述】:
所以我正在尝试根据角色过滤我的 dynamoDb 数据,因为您可以看到角色属性存在于某些并非全部的对象中
[
{
id: "7",
email: 'test1@gmail.com',
name: 'test1',
age: '12',
},
{
id: "8",
email: 'test2@gmail.com',
name: 'test2',
age: '12',
},
{
email: 'test3@gmail.com',
name: 'test3',
age: '12',
test: 'test',
role: 'ADMIN'
},
{
email: 'test4@gmail.com',
name: 'test4',
age: '12',
test: 'test',
role: 'ADMIN'
}
]
如果我尝试使用 email 进行扫描,它可以工作,但如果我尝试使用 role 进行扫描,则会出现错误: 无效的FilterExpression:属性名称是保留关键字;保留关键字:角色
我尝试了代码
let params = {
TableName: 'tableName',
FilterExpression: 'role =:role',
ExpressionAttributeValues: { ':role': 'ADMIN' },
expressionAttributeNames: { '#role': 'role' }
}
let result = await this.docClient.scan(params).promise();
还有这个
let params = {
TableName: 'tableName',
FilterExpression: 'attribute_not_exists(role)',
ExpressionAttributeValues: { ':role': 'ADMIN' },
expressionAttributeNames: { '#role': 'role' }
}
let result = await this.docClient.scan(params).promise();
都给我同样的错误
【问题讨论】:
-
是保留关键字,不能使用。您可以将
'#r = :role'用于过滤器表达式,将'#r':'role'用于名称映射。还有错别字:expressionAttributeNames。 -
感谢它的作品
标签: node.js dynamodb-queries aws-sdk-js amazon-dynamodb