Как передать пустую строку в качестве значения поля в DynamodB? - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь выполнить почтовый запрос со следующими данными json. Но мне нужно одно поле, то есть «заметки», чтобы передать в качестве значения пустой строки. Когда я прохожу так, появляется ошибка:

'Одно или несколько значений параметров недопустимы: AttributeValue не может содержать пустую строку'.

Как я могу исправить эту проблему?

//json data which i need to post
  {
  "storeId": "106",
  "addressId": "1",
  "managerId": "1",
  "name": "Syammohan",
  "contactNo": "9656985685",
  "notes": "",
  "bookingType": "Weddding Consult",
  "bookingDate": "2019-05-02",
  "bookingTime": "09:00 am"
}

function bookingDone(employee) {
  var {

    storeId,
    addressId,
    managerId,
    name,
    contactNo,
    notes,
    bookingType,
    bookingStatus,
    bookingTime
  } = req.body

  console.log("notes", notes);

  const params = {
    TableName: "Booking",

    Item: {
      id: id,
      storeId: storeId,
      addressId: addressId,
      managerId: managerId,
      name: name,
      contactNo: contactNo,
      notes: notes,
      bookingType: bookingType,
      bookingStatus: bookingStatus,
      bookingDate: bookingDate,
      bookingTime: bookingTime,
      employeeId: employee.id

    },

  };

  docClient.put(params, (error) => {
    if (error) {
      console.log(error);
      res.status(400).json({ error: 'Could not create booking' });
    }
    // queue.push(JSON.stringify({ event: 'booking.booking.created', model: { 'Bookings': params.Item } }));
    res.send(params.Item)
    // res.json({ id, name, info });

  });
}

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Карта атрибутов и их значений.Каждая запись на этой карте состоит из имени атрибута и значения атрибута.Значения атрибута не должны быть нулевыми;атрибуты строкового и двоичного типов должны иметь длину больше нуля;и установленные атрибуты типа не должны быть пустыми.Запросы, содержащие пустые значения, будут отклонены с исключением ValidationException.

Вы можете решить проблему, определив функцию для удаления пустой строки из объекта, такую ​​как

function removeEmptyStringElements(obj) {
  for (var prop in obj) {
    if(obj[prop] === '') {// delete elements that are empty strings
      delete obj[prop];
    }
  }
  return obj;
}
removeEmptyStringElements(req.body);

Это приведет к удалению пустойатрибуты вашего объекта.

Если ваш объект содержит вложенный объект, используйте следующую функцию

function removeEmptyStringElements(obj) {
  for (var prop in obj) {
    if (typeof obj[prop] === 'object') {// dive deeper in
      removeEmptyStringElements(obj[prop]);
    } else if(obj[prop] === '') {// delete elements that are empty strings
      delete obj[prop];
    }
  }

removeEmptyStringElements(req.body)
0 голосов
/ 02 мая 2019

Да Dynamodb не может принимать пустую строку. Так что отредактируйте конфигурацию aws

var docClient = новый AWS.DynamoDB.DocumentClient ({ convertEmptyValues: true });

Это работает!

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