Нет данных с запросом DynamoDB - PullRequest
0 голосов
/ 01 апреля 2019

Невозможно получить запись для запроса Nodejs.Данные (в формате JSON) приведены ниже вместе с кодом.Мои данные содержат вложенные атрибуты, что затрудняет запросы запросов.Хотя запрос Nodjs действителен, у вас не может быть результата данных.

Моя структура данных JSON в DynamoDB:

[
  {
    "department": 1,
    "city": "city01",
    "info": {
      "markets": [
        { 
          "name": "marché de city01",
          "day": "vendredi matin",
          "location": "place de la république",
          "frequence": "hebdomadaire",
          "category": "tous produits",
          "merchants": "40",
          "link": "https://www.city01.html"
        }
      ]
    }
  },
  {
    "department": 2,
    "city": "city02",
    "info": {
      "markets": [
        {
          "name": "marché de city02", 
          "day": "samedi matin",
          "location": "place de la liberté",
          "frequence": "hebdomadaire",
          "category": "tous produits", 
          "merchants": "80",
          "link": "https://www.city02.html"  
        },
        {
          "name": "marché de city02", 
          "day": "lundi après-midi",
          "location": "place de la mairie",
          "frequence": "bi-mensuel",
          "category": "tous produits", 
          "merchants": "60",
          "link": "https://www.city02.html"  
        }
      ]
    }
  }
]

Мой код Nodejs:

var AWS = require("aws-sdk");

AWS.config.update({
  region: "eu-west-1"
});

var docClient = new AWS.DynamoDB.DocumentClient();

// recherche par contenu
console.log("Querying for markets of 1 (Ain) for city equal: city01");

var params = {
  TableName : "TestMarkets",
  ProjectionExpression:"#dep, #city, #info",
  KeyConditionExpression: "#dep = :dep and #city = :city",
  FilterExpression: "contains (#market, :ddd)",
  ExpressionAttributeNames:{
    "#dep": "department",
    "#info": "info",
    "#city": "city",
    "#market": "info.markets"
  },
  ExpressionAttributeValues:{
    ":dep": 1,
    ":ddd": {
      "day": "vendredi matin"
    },
    ":city": "city01",
  }
};

docClient.query(params, function(err, data) {
  if (err) {
    console.log("Unable to query. Error:", JSON.stringify(err, null, 2));
  } else {
    console.log("Query succeeded.");
    console.log(JSON.stringify(data)); 
    data.Items.forEach(function(item) {
      console.log("Dep: ", item.department + ", City: " + item.city);
      console.log(JSON.stringify(item.info));
    });
  }
});

Почему результат не дает ничего?Спасибо.

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Спасибо за ваш ответ.С этим изменением ниже у меня появляется следующая ошибка:

Querying for markets of 1 (Ain) for city equal: city01
Unable to query. Error: {
  "message": "One or more parameter values were invalid: Condition parameter 
type does not match schema type",
   "code": "ValidationException",
   "time": "2019-04-01T14:49:55.756Z",
   "requestId": "DIQOM6P7U18JSE9U3UEE5VNNNFVV4KQNSO5AEMVJF66Q9ASUAAJG",
   "statusCode": 400,
   "retryable": false,
   "retryDelay": 12.377875615412904
}

Только код "ExpressionAttributeValues" был изменен (как уже упоминалось) в коде Nodejs.

  ExpressionAttributeValues: {
    ":dep": {
      "N": 1
    },
    ":ddd": {
      "M": {
        "day": {
           "S": "vendredi matin"
        }
      }
    },
    ":city": {
      "S": "city01"
    }
 }
0 голосов
/ 01 апреля 2019

Для начала значение ExpressionAttributeValues в вашем запросе недопустимо.

ExpressionAttributeValues: {
  ":dep": {
    N: "1"
  },
  ":ddd": {
    M: {
     "day": {
       S: "vendredi matin"
     }
    }
  },
  ":city": {
    S: "city01"
  }
}

https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html#DDB-Query-request-ExpressionAttributeValues

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...