首页 > 解决方案 > RethinkDB 过滤器未找到结果

问题描述

我对 RethinkDB (NodeJS) 有疑问。

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

     常量 someID = 1234;

     r.table('list').filter({id: someID}).run().then((err, result) =>{
      if(err) 抛出错误;
      控制台日志(结果)
     })

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

     常量 someID = 1234;

     r.table('list').filter({id: 1234}).run().then((err, result) =>{
      if(err) 抛出错误;
      控制台日志(结果)
     })


它工作得很好。

我所做的唯一更改是直接提供 ID,而不是使其成为变量/常量。

可能是什么问题?

标签: javascriptnode.jsrethinkdb

解决方案


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

看来第一个用例是您正在寻找的,但我认为您可能会发现第二个有用。


推荐阅读