Не удается получить данные из первичного ключа в RethinkDB
Я пытаюсь получить данные в RethinkDB по первичному ключу. Однако мой код не может найти данные.
Я использую драйвер RethinkDBDash для получения данных, и я определил Rethink как client.db. Идентификатор представляет собой нарезанный массив из данных, которые я получаю из API, когда я консоль регистрирую его, значение равно 1. Я проверил это, просто введя целое число 1, и он смог получить данные, однако, когда я использовать данные из API, чтобы получить их, он возвращает нулевой erorr. Таблица, по которой я пытаюсь получить данные, называется "предложения" с первичным ключом sid, первоначально id. Таблица выглядит так:
{
"author": {
"id": "535986058991501323"
} ,
"sid": 1 ,
"status": "PENDING" ,
"suggestion": "wtf"
}
В прошлых проектах мне удавалось получить данные с первичного ключа без проблем, используя этот точный метод.
const id = args.slice(0).join(' ');
console.log(id);
const data = await client.db.table('suggestions').get(id).run();
console.log(data.sid);
После получения данных я ожидал консольный журнал со значением 1. Однако я получил ошибку, которая говорит об этом:
(node:34984) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'sid' of null
at Object.run (C:\Users\facto\Desktop\Projects\JavaScript\Bots\CountSill\commands\deny.js:7:26)
(node:34984) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:34984) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
1 ответ
Я выяснил проблему: primarykey ожидает целое число, а не строку, поэтому он ищет целое число, а не строку, и, поскольку он не может его найти, он выдает ошибку. Чтобы это исправить, мне просто нужно было изменить данные с целого на строку. Вы также можете просто использовать функцию parseInt для преобразования массива из строки в целое число.