使用dynamoose

时间:2017-11-16 15:14:18

标签: node.js amazon-dynamodb dynamoose

我正在尝试使用3个参数查询DynamoDB表,但它不起作用。但是,使用1个参数可以很好地工作。

我正在使用NodeJs,DynamoDB,Dynamoose ......这是我的代码:

    var params = {

        TableName: "DifferentTermsPages",

        KeyConditionExpression:"#providerName = :providerName and #productType = :productType and #language = :language",

        ExpressionAttributeNames: {
            "#providerName":"providerName",
            "#productType":"productType",
            "#language":"language"
            },

        ExpressionAttributeValues: {
            ":providerName":providerName,
            ":productType":productType,
            ":language":language
            }

        };


       OcrController.getDifferencesFromDB(params)
        .then(function(dataDB) {
            console.log("DATA = ", dataDB); 
        }).catch(function(err) {
            console.error(err);
       });

使用承诺调用另一个函数:

  getDifferencesFromDB(params) {

    return new Promise(function(resolve, reject) {

        DifferentTermsPagesModel.scan(params).exec().then(function (err, data) {
          if(err) {
            reject(err);
          }
          else {
            console.log("OK!!");
            resolve(data);
          }
        });

    });
  }

显示我的错误......

TypeError: Cannot read property 'toDynamo' of undefined
at Scan.exec (/API/src/node_modules/dynamoose/lib/Scan.js:57:23)
at ...

我的错误在哪里?我该如何解决?或另一种形式来实现这一目标......

1 个答案:

答案 0 :(得分:0)

当您使用扫描API 时,请使用FilterExpression而不是KeyConditionExpression

FilterExpression:"#providerName = :providerName AND #productType = :productType AND #language = :language",