DynamoDB中的扫描函数,保留关键字为FilterExpression NodeJS
Scan Function in DynamoDB with reserved keyword as FilterExpression NodeJS
我的扫描功能:
var tableName = 'faasos_orders',
filterExp = 'status = :delivered OR status = :void OR status = :bad',
projectionValues = '',
expressionAttr = {};
expressionAttr[":delivered"] = "delivered";
expressionAttr[":bad"] = "bad";
expressionAttr[":void"] = "void";
limit = 10;
dynamoConnector.getItemUsingScan(tableName, filterExp, projectionValues, expressionAttr, function (err, data) { ...........}
运行时出错:
{ [ValidationException: Invalid FilterExpression: Attribute name is a reserved keyword; reserved keyword: status]
message: 'Invalid FilterExpression: Attribute name is a reserved keyword; reserved keyword: status',
code: 'ValidationException',
time: Mon Apr 18 2016 21:57:30 GMT+0530 (IST),
requestId: 'AV6QFHM7SPQT1QR3D4OO81ED4FVV4KQNSO5AEMVJF66Q9ASUAAJG',
statusCode: 400,
retryable: false,
retryDelay: 0 }
现在我明白了,我正试图在e filterExpression,它是非法的。但是,如果我通过awsgui运行相同的函数,它会漂亮地返回数据(查看图片了解详细信息):通过gui 扫描状态功能
所以问题是,我如何通过节点添加过滤器表达式而不必更改密钥名称???
已解决:
aws-sdk有两个参数:
表达式属性名称
表达式属性值
两者都提供了替换属性列表中使用的占位符的功能。这里的属性有点模糊,我感到困惑。aws上的向导在使用术语attribute时意味着键和值。
因此,如果要使用保留关键字作为关键字属性,请使用带有#(磅)的Expression attribute Name参数来表示占位符。
类似地,在要为值属性使用占位符的地方,使用表达式属性值参数和:(冒号)来表示占位符。
所以最后我的代码(工作)看起来是这样的:
var param = {
TableName: "faasos_orders",
FilterExpression: "#order_status = :delivered OR #order_status = :void OR #order_status = :bad",
ExpressionAttributeValues: {
":delivered": "delivered",
":void": "void",
":bad": "bad"
},
ExpressionAttributeNames: {
"#order_status": "status"
}
};
dynamodb.scan(param, function (err, data) {....});
:status
是表达式中的占位符,您没有为其提供值。在这里查看您是如何为其他占位符提供价值的:
expressionAttr[":delivered"] = "delivered";
expressionAttr[":bad"] = "bad";
expressionAttr[":void"] = "void"
您需要对:status
占位符执行同样的操作。我在错误消息中没有看到任何关于保留字的内容,所以我不确定你为什么认为这是错误的原因。该错误特别指出您没有为:status
占位符提供值。
相关文章:
- 使用“;这个“;JavaScript原型方法中的关键字
- delete关键字在全局变量上的不同行为
- JavaScript 中的嵌套函数和 “this” 关键字
- 如何在不使用 new 关键字的情况下从函数创建对象
- Angularjs使用“;这个“;promise内的关键字回调
- 重写需要javascript中带有import关键字的语法
- Regex,用于从字符串中筛选关键字
- Javascript 对象和 this 关键字
- 如何在不知道关键字的情况下访问javascript对象值
- 可以在Javascript中添加新的关键字吗
- javascript中的这个关键字
- Javascript关键字搜索子类Div值
- 在对象中用Javascript编写此关键字
- 在构建字典时,作为关键字的变量会自动变为字符串
- 正则表达式,从一组关键字中获取奇数
- 当在文本框中搜索关键字时,我会得到以前的结果作为输出
- 在UltraEdit中搜索关键字
- 查找关键字并创建新对象
- 使用Javascript根据URL中的关键字隐藏下拉选项
- Javascript 中的 const 关键字 scope