0
動作しないと私は理解できませんこれら:DynamoDBのをattribute_existsはこれで数時間のために私の頭を叩いて
{
gateway: 'gateway1',
device_id: '2',
state: { temperature: 20, humidity: 30, pressure: 101049 },
timestamp: 1498331237261
},
{
gateway: 'gateway1',
device_id: '2',
state: { temperature: 20, humidity: 30, pressure: 101049, lat: 2, long: 1 },
timestamp: 1498331237262
}
プライマリパーティションキー:device_id
(文字列)
プライマリソートキー:timestamp
(番号)
lat
とlong
の属性を持つ特定のデバイスの最新のアイテムを取得しようとしています。
const docClient = new AWS.DynamoDB.DocumentClient();
const id = 2;
const params = {
TableName: 'device_telemetry',
KeyConditionExpression: 'device_id = :id',
ProjectionExpression: '#s, #lat, #lng, #ts',
FilterExpression: 'attribute_exists(#lat) AND attribute_exists(#lng)',
ExpressionAttributeNames: {
'#s': 'state',
'#lat': 'state.lat',
'#lng': 'state.long',
'#ts': 'timestamp'
},
ExpressionAttributeValues: {
':id': id.toString()
},
ScanIndexForward: false,
Limit: 1
};
const onResult = (res) => {
console.info('devices res for: ', id, res);
};
console.info('query: ', params);
docClient.query(params).promise().then(onResult);
私はattribute_exists(#s)
を使用している場合、それは動作しますが、#lat
または#long
ことが
私が間違って何をしていないのですか?