首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从DynamoDB查询多个项

从DynamoDB查询多个项
EN

Stack Overflow用户
提问于 2019-09-23 15:26:08
回答 1查看 6.6K关注 0票数 3

我在AWS中设计了一个简单的无服务器应用程序: API > Lambda (node.js) -> DynamoDB。

我想把顾客的数量放在同一张桌子上,并与其他物品保持一致。

Client_id,不,商品,价格

0001,1,方框,10

0001,2,表,100

0002,1,主席,20

0003,1,灯,15

我选择了主键= Client_id和排序键= no,目前我可以使用"dynamodb.get“函数获得单个项,但是在为一个客户端获取所有项时遇到了问题。我试着使用"dynomodb.batchget",但我需要知道表中有多少项并执行一些循环。也许有不同的,更好的方法从单一客户获得所有的项目?

代码语言:javascript
代码运行次数:0
运行
复制
const AWS = require('aws-sdk');
const dynamoDb = new AWS.DynamoDB.DocumentClient();

module.exports.get2 = (event, context, callback) => {

    var params = {
        "RequestItems": {
            "items": {
                "Keys": [{
                        id: Number(event.pathParameters.id),
                        no: 1
                    },
                    {
                        id: Number(event.pathParameters.id),
                        no: 2
                    }
                ]
            }
        },
        "ReturnConsumedCapacity": "TOTAL"
    };

    dynamoDb.batchGet(params, function(err, data) {
        if (err) {
            console.error(err);
            callback(null, {
                statusCode: err.statusCode || 501,
                headers: { 'Content-Type': 'text/plain' },
                body: 'Couldn\'t fetch the item.',
            });
            return;
        }
        const response = {
            statusCode: 200,
            body: JSON.stringify(data),
        };
        callback(null, response);
    });
};```
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-23 17:49:24

若要查找给定Client_id的所有记录,请使用query。下面是一个例子:

代码语言:javascript
代码运行次数:0
运行
复制
const AWS = require("aws-sdk");

AWS.config.update({region: 'us-east-1'});

const params = {
  TableName: 'mytable',
  KeyConditionExpression: 'Client_id = :Client_id',
  ExpressionAttributeValues: {
    ':Client_id': '0001',
  },
};

const dc = new AWS.DynamoDB.DocumentClient();

dc.query(params, (err, data) => {
  if (err) {
    console.log('Error', err);
  } else {
    for (const item of data.Items) {
      console.log('item:', item);
    };
  }
});

但是,如果预先知道所需项的完整(分区和排序)键(相对于具有给定分区键的所有项),则可以使用batchGetItem

另外,考虑使用SDK函数的promisified variants

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58065654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档