Удалите элемент JSON, если он не содержит заданного значения c - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь вернуть только те значения, где john найден из базы данных DynamoDB. Я могу вернуть значения, содержащие name: john , из сопоставленного списка, однако проблема заключается в том, что он, похоже, также возвращает другие значения.

Запуск выбора : 'count' возвращает 1 совпадение, что является правильным, но ничего не возвращает при использовании. Я предполагаю, что count просто возвращает число, а не специфику c выберите, где соответствует john.

Я пишу это на NodeJS; Я надеюсь, что кто-нибудь поможет мне разобраться в этом. Я знаю, что значение, которое я хочу показать, - это элементы json, где name: john , все, что я хочу, чтобы не отображалось.

Вот мой результат на данный момент:

{
  "Department": [
    {
      "employees": [
        {
          "name": "john"
        },
        {
          "name": "sally"
        }
      ]
    }
  ],
  "Count": 1
}

Мой код:

const AWS = require('aws-sdk'); // eslint-disable-line import/no-extraneous-dependencies 
const dc = new AWS.DynamoDB.DocumentClient(); 

exports.handler = async (event, context, callback) => {

// Construct the params for filtering data through dynamodb
const params = {
  FilterExpression: "contains(#department, :employees)",
  ExpressionAttributeNames: {
         "#department": "employees",
    },
    ExpressionAttributeValues: {
      ":employees": {
          "name":"john"
      }
   },
   ProjectionExpression: "#department", 
   TableName: 'mytable',
  //Select: 'COUNT'
};

const resultDC = await dc.scan(params).promise();

var items = resultDC.Items;
var count = resultDC.Count;

  var returned_list = {
    'Department' : items,
    'Count' : count,
  }; 

    // create a response
      const response = {
      statusCode: 200,
      body: JSON.stringify(returned_list),
    };
    callback(null, response);

};

1 Ответ

0 голосов
/ 06 мая 2020

Я предлагаю вам использовать местный вторичный индекс. Посмотрите здесь .

...