RethinkDB 过滤器找不到结果

RethinkDB filter not finding results

我对 RethinkDB (NodeJS) 有疑问。

我正在尝试使用一个简单的 .filter() 函数,但由于某些未知原因它不想找到结果。目前我的代码如下所示:

     const someID = 1234;

     r.table('list').filter({id: someID}).运行().then((err, result) =>{
      如果(错误)抛出错误;
      console.log(结果)
     })

我知道 ID 为“1234”的结果在那里,因为如果我 运行 这个查询:

     const someID = 1234;

     r.table('list').filter({id: 1234}).运行().then((err, result) =>{
      如果(错误)抛出错误;
      console.log(结果)
     })


效果很好。

我所做的唯一更改是直接提供 ID,而不是将其设为 variable/constant。

可能是什么问题?

如果您正在按 table 的主索引进行搜索(通常是 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' }
    

第一个用例似乎是您要找的,但我想您可能会发现第二个用例有用。

对于遇到相同问题的任何人,我已通过更改数据库中的对象解决了该问题。我删除了我的 id 字段,因此 Rethink 生成了它自己的密钥,现在我将其用作我的对象 ID。它工作得很好。