dynamodb - boto3客户端工作资源抛出错误

时间:2017-12-01 11:22:15

标签: amazon-web-services amazon-dynamodb boto3

当我使用Key从表中使用客户端get_item时,它工作正常。如果我尝试与资源相同我得到错误。这里出了什么问题

router.get('/video/results/:search_query', middleware.ensureAuthenticated, function (req, res) {
    query = req.params.search_query;
    console.log(query);
    var dataFinal;
    function resp() = youtube.search.list({
        part: 'snippet',
        q: query,
        type: 'video'
    },function (err, data, response) {
        if (err) {
            console.error('Error: ' + err);
            res.json({
                status: "error"
            });
        }
        if (data) {
           // console.log(typeof data);
            return data;
           //  return res.json({
           //      status: "ok",
           //      data: data
           //  });

            console.log(data);
            //res.render('resultsVideo',{results:data})
        }
    });
    res.render('resultsVideo',{data:resp()})

});

2 个答案:

答案 0 :(得分:1)

无需声明发电机Json格式的类型;博托为你做到了。如果您的表的分区键名为'EmpId'且类型为string,则您的get item调用应该如下所示

table.get_item(Key={'EmpId':'13456789ABC'})

答案 1 :(得分:1)

Boto3提供两种服务抽象:

  1. 客户(低级别)
  2. 资源(客户端上的高级,面向对象的抽象)
  3. 还有两个相应的DynamoDB get_item方法:

    1. DynamoDB Client有一个get_item()方法
    2. DynamoDB Table(资源)有一个get_item()方法
    3. 如果您阅读每种方法的文档,您将看到他们希望以两种不同的方式提供项密钥(在我的示例中,我假设它是一个字符串):

      1. 客户:Key = {“column”:{“S”:“value”}}
      2. 资源:Key = {“column”:“value”}
      3. 有一个很好的Introduction to Version 3 of the AWS SDK for Python视频。