javascript - 如何根据字段名而不是字段值从Rethinkdb表中获取数据

标签 javascript node.js rethinkdb rethinkdb-javascript

我有一个 rethinkdb 表,它有 5 行,其中一行是 以下:

{
"appkey": {
"YcJ1HR6vjebXNHwOzeC2l2EAvUNw8qyp": {
"createdBy": {
"fullName":  "DD" ,
"id":  "7943d176-4805-461d-841e-3de766a3825d" ,
"primaryName": dd@gmail.com, »
} ,
"creationTime":  "2016-01-20T05:57:40.773+00:00" ,
"expiryTime":  "2017-01-20T05:57:40.539+00:00"
}
} ,
"creationTime":  "2016-01-20T05:57:40.773+00:00" ,
"customerId":  "U2KRpPbK" ,
"domain":  "co.in" ,
"id":  "40e536cc-08f1-4a54-8104-13d900abd643" ,
"kind":  "admin#option1#option2" ,
"roles": {
"admin#option1#option2": {
"create": true ,
"delete": true ,
"modify": true ,
"read": true
} 
}
}
}

在这种情况下,我如何根据 appKey 的字段“YcJ1HR6vjebXNHwOzeC2l2EAvUNw8qyp”获取上面的行,这是我从客户端获取的 token 。

为了做同样的事情,我尝试了以下查询:

r.db('admin').table('services')
        .filter(function (record) {  
                return record('appkey').coerceTo('array')
                .map(function (record) {
                    return record(1).hasFields(token)
                });
                .distinct()

        })

        .run()

但上面的查询在每种情况下都只返回 1 行,无论标记是用于 4 行还是 2 行。

我做错了什么!

最佳答案

我想扩展 Anders BornholmhasFields 的回答,因为 hasFields 非常强大。应用于序列时,它可以充当过滤器。

您的查询可以很简单:

r.db('admin').table('services')
  .hasFields({'appkey': {'YcJ1HR6vjebXNHwOzeC2l2EAvUNw8qyp': true}})

使用 nested field syntax当它包含许多深层字段时,我们可以编写非常容易的强大查询。

关于javascript - 如何根据字段名而不是字段值从Rethinkdb表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34893126/

相关文章:

javascript - 滚动方向和滚动百分比为真时的类滚动 (jQuery)

javascript - Node.js 不执行回调中的最后一个表达式

node.js - 在 Promise 中调用 async wait 问题

javascript - RethinkDB:​​判断结果集中是否有下一个文档

rethinkdb - 如何就地修改数组字段?

javascript - 如何使用JavaScript更改元素的类?

javascript - 编写依赖于 `IntersectionObserver` 调用的测试

javascript - 使用 Firebase 时应该如何测试 vue 组件?

php - 我可以在 NodeJS 中生成 key 对,使用公钥在 PHP 中加密数据,然后在 NodeJS 中解密吗?

heroku - Heroku 上的 Rethinkdb