通过dynamodb中的复合主键获取数据

时间:2018-01-09 07:13:06

标签: amazon-dynamodb composite-primary-key

我正在使用以下功能 - >

const params = {
        TableName: process.env.dummyTable,
        Key: {

               outlet_id:event.pathParametrs.id,
               id:{"S":"default"} 


        }

    }
dynamoDb.get(params).promise()
        .then(result => {
          console.log('-->',result);
          const response = {
            statusCode: 200,
            body: JSON.stringify(result),
          };

          callback(null, response);
        })
        .catch(error => {
          console.error(error);
          callback(new Error('Couldn\'t fetch table Data'));
          return;
        });
     }

我想基于outlet_id和id获取记录.Here outlet_id是主分区键,而id是主要排序键(使用uuid)。   如何使用默认值指定id(主排序键)以便我可以获取数据

1 个答案:

答案 0 :(得分:0)

目前还不清楚您是通过指定复合分区+排序键来尝试获取单个项目,还是尝试使用相同的分区键查询所有项目(即未指定排序键)。

如果您尝试使用特定的分区键和排序键获取单个项目,则代码看起来很好,但有一个例外。应该使用类型指定分区键,如下所示:

const params = {
    TableName: process.env.dummyTable,
    Key: {
           outlet_id:{"S": event.pathParametrs.id},
           id:{"S":"default"} 
    }
}

但是,如果您尝试查询具有相同分区键的所有项目(即未指定排序键),则需要修改代码以执行query而不是get:< / p>

const params = {
    TableName: process.env.dummyTable,
    Key: {
           outlet_id: {"S": event.pathParametrs.id}
    }
}
dynamoDb.query(params).promise()
.then(
  //...
)
.catch(
  //...
)