不知道这里发生了什么,我跟踪文档,得到错误,所以也许我的表被定义错了?
function parseGET( data, callback )
{
const params =
{
TableName: data.TableName,
Key:
{
"workOrder": data.workOrder // <--number, not a string
}
};
dynamodb.get( params, ( error, data ) =>
{
if( error )
console.log( 'table ERROR:', error );
...
}
}响应:“提供的键元素与架构不匹配”
Response:
{
"statusCode": 200,
"body": "The provided key element does not match the schema",
"headers": {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*"
}
}如果我做一个扫描,我得到我所有的数据,但我只想得到一个一行。
dynamodb.scan( {"TableName": data.TableName}, ( error, data ) =>
...
data:
{
"probeCount": "123",
"rangeCal": "hight",
"ESID": "1",
"rangeNom": "1000",
"nodeCount": "123",
"password": "123",
"cableLength": "456",
"userId": "Onicon",
"usePasswd": "disable",
"elevation": "789",
"workOrder": 789456,
"rangeMax": "1150",
"serialNumber": "3"
}
],
"Count": 11,
"ScannedCount": 11获得一行在控制台中工作,但我不知道如何通过JS完成同样的工作。
表中的一些细节:
Table name myTestTable
Primary partition key workOrder (Number)
Primary sort key -
Point-in-time recovery DISABLEDEnable
Time to live attribute DISABLEDManage TTL
Table status Active
Creation date March 22, 2018 at 1:45:09 PM UTC-7
UTC: March 22, 2018 at 8:45:09 PM UTC
Local: March 22, 2018 at 1:45:09 PM UTC-7
Region (N. California): March 22, 2018 at 12:45:09 PM UTC-8发布于 2018-04-20 16:09:36
感谢那些帮忙的人。最终的结果是我有点困惑(和往常一样)。data.workOrder是一串数字,如。"654"使用JSON,而不是654。因此,简单的解决方案是将其转换为实际数字:
data.workOrder = parseInt( data.workOrder, 10 );
现在我的原始查询开始工作了!
发布于 2018-04-16 18:01:26
你有没有试过把你的钥匙的定义修改成.
Key:
{
"workOrder": {"N", data.workOrder} // <--number, not a string
}你可能需要用
data.workOrder.toString()在定义密钥的时候。
https://stackoverflow.com/questions/49863490
复制相似问题