Фильтр RethinkDB не находит результатов - PullRequest
0 голосов
/ 06 января 2019

У меня проблема с RethinkDB (NodeJS).

Я пытаюсь использовать простую функцию .filter (), но по неизвестной причине не хочет найти результат. В настоящее время мой код выглядит так:

     const someID = 1234;

     r.table('list').filter({id: someID}).run().then((err, result) =>{
      if(err) throw err;
      console.log(result)
     })

Я знаю, что результат с идентификатором '1234' есть, потому что, если я выполню этот запрос:

     const someID = 1234;

     r.table('list').filter({id: 1234}).run().then((err, result) =>{
      if(err) throw err;
      console.log(result)
     })


Работает просто отлично.

единственное изменение, которое я сделал, - это присвоение идентификатора напрямую, а не превращение его в переменную / константу.

В чем может быть проблема?

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Для тех, у кого такая же проблема, я решил ее, изменив свой объект в базе данных. Я удалил свое поле id, чтобы Rethink сгенерировал его собственный ключ, и теперь я использую его в качестве идентификатора объекта. Работает просто отлично.

0 голосов
/ 06 января 2019

Если вы ищете по первичному индексу таблицы (обычно id), то get, вероятно, инструмент, который вы ищете:

const itemId = 1234;

r.table('list').get(itemId)

Если вы ищете что-то на основе вторичного ключа, тогда getAll будет служить вашим целям:

  1. При необходимости создайте ключ:

    r.table('list').indexCreate('val')
    
  2. Доступ к данным:

    const itemVal = 'hey'
    
    r.table('list').getAll(itemVal, {index: 'val'})
    
    // would return data like: { id: 1234, val: 'hey' }
    

Похоже, что первый вариант использования - это то, что вы ищете, но я подумал, что вам может пригодиться второй.

...