RethinkDB过滤器未找到结果

时间:2019-01-06 02:40:40

标签: javascript node.js rethinkdb

我的RethinkDB(NodeJS)有问题。

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

     const someID = 1234;

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

我知道ID为'1234'的结果在那里,因为如果我运行以下查询:

     const someID = 1234;

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


它很好用。

我所做的唯一更改是直接给了ID,而不是使它成为变量/常量。

可能是什么问题?

2 个答案:

答案 0 :(得分:0)

如果您要按表的主索引(通常是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' }
    

您似乎正在寻找第一个用例,但我认为您可能会发现第二个用例。

答案 1 :(得分:0)

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