Как сделать разбиение на дочерние массивы с помощью node js и aws динамо-базы данных - PullRequest
0 голосов
/ 08 марта 2020

Я хочу сделать нумерацию " car_types ", используя aws Динамо дБ и node js. Я не хочу использовать js, мы можем сделать это с помощью динамо-базы данных? Мне нужны все элементы, общая страница, размер страницы, текущая страница и данные в ответ.

{
  "uid": "222-3333",
  "car_types": [
    {
      "description": "fsdf",
      "title": "sdfsd"
    },
    {
      "description": "fdfdfdf",
      "title": "dfdfd"
    },
    {
      "description": "dasda",
      "title": "asdas"
    },
    {
      "description": "dasd",
      "title": "asdas"
    },
    {
      "description": "dasdasd",
      "title": "asdas"
    }
  ]
}

Aws Динамо БД и Node js Код, который я использовал для получения результата.

export function get_car_types_list(){

  var params = {
    TableName : "cms_cars",
    KeyConditionExpression: "#uid = :uid",
    ExpressionAttributeNames:{
        "#uid": "uid"
    },
    ExpressionAttributeValues: {
        ":uid": "222-3333"
    }
};

return docClient.query(params).promise()
.then(function(data) {
      console.log(data);
      return data;

}).catch( (err) => {
  console.log('got Error', err);
  });


}

Я хочу Результат с использованием динамо-запроса БД:

{
"totalItem":5,
"totalPage":1,
"pageSize":"1",
"currentPage":"1",
  "car_types": [
    {
      "description": "fsdf",
      "title": "sdfsd"
    },
    {
      "description": "fdfdfdf",
      "title": "dfdfd"
    },
    {
      "description": "dasda",
      "title": "asdas"
    },
    {
      "description": "dasd",
      "title": "asdas"
    },
    {
      "description": "dasdasd",
      "title": "asdas"
    }
  ]
}

1 Ответ

0 голосов
/ 08 марта 2020

DynamoDb вернет данные 1 МБ при выполнении scan/query, также добавляется LastEvaluatedKey, чтобы получить результат, если есть какие-либо оставшиеся данные. Если вы передаете ExclusiveStartKey: LastEvaluatedKey, вы можете scan/query с нумерацией страниц. Я добавил некоторые настройки в ваш подход, это может помочь вам.

Редактировать: Вы можете ограничить результат, передав Limit: Number своим параметрам. Это позволит вам ограничить количество возвращаемых предметов, и вы можете получить больше с LastEvaluatedKey.

export function get_car_types_list(LastEvaluatedKey){

  var params = {
    TableName : "cms_cars",
    KeyConditionExpression: "#uid = :uid",
    ExpressionAttributeNames:{
        "#uid": "uid"
    },
    ExpressionAttributeValues: {
        ":uid": "222-3333"
    },
    Limit: 5,
};
if (LastEvaluatedKey) {
    params.ExclusiveStartKey = LastEvaluatedKey;
}
return docClient.query(params).promise()
.then(function(data) {
      console.log(data);
      return data;

}).catch( (err) => {
  console.log('got Error', err);
  });
}
...