Неправильный ключ сортировки при запросе из DynamoDB (узел js) - PullRequest
0 голосов
/ 25 июня 2018

Я использую AWS DynamodB для хранения некоторых данных. Эта таблица имеет «ключ» в качестве «первичного ключа раздела» и «create_micro_time_float» в качестве «первичного ключа сортировки».

Мои данные в таблице примерно такие.

{
    'key': {'S': 'xxx'},
    'create_micro_time_float': {'N': 1499844782.50379992}
}, ...

Но когда я использую операцию «сканирование» (чтобы получить все данные в таблице), я получаю что-то вроде этого.

{
    'key': {'S': 'xxx'},
    'create_micro_time_float': {'N': 1499844782.5037999}
}, ...

Последняя десятичная точка моего «Первичного ключа сортировки» отсутствует.

Проблема в том, что я хочу обновить все записи в таблице, но теперь у меня неправильный ключ сортировки. Мне нужен правильный ключ сортировки, чтобы обновить запись в таблице.

Как я могу это сделать (с nodejs dynamicodb aws sdk )?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Поскольку проблема вызвана javascript (js имеет предельную длину числа и десятичные разряды), я перешел на PHP и вместо него использую AWS SDK для PHP . Теперь это работает!

0 голосов
/ 25 июня 2018

Вы можете преобразовать в тип String перед отправкой, как сказано в документации.Используя .toFixed () вы сохраняете желаемую точность.

Из Документы AWS

Число

Числа могут быть положительными, отрицательными или нулевыми.Числа могут иметь точность до 38 цифр.Превышение этого приводит к исключению.

Положительный диапазон: от 1E-130 до 9.999999999999999999999999999999999999999E + 125

Отрицательный диапазон: -9,99999999999999999999999999999999999999E + 125 до -1E-130

1017DynamoDB, числа представлены в виде переменной длины.Начальные и конечные нули обрезаются.

Все числа по сети передаются в DynamoDB в виде строк, чтобы обеспечить максимальную совместимость между языками и библиотеками.Однако DynamoDB рассматривает их как атрибуты числового типа для математических операций.

Примечание

Если важна точность чисел, вы должны передавать числа в DynamoDB, используя строки, которые вы конвертируете изТип номера.

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