RethinkDB:​​无法在急切的流上调用`changes`

时间:2015-04-23 18:12:17

标签: rethinkdb

我有一个用户表,每个用户都有一系列朋友。

其中的文档如下所示:

simple-todos.js:34 Uncaught TypeError: Template.virtuebox.onRendered is not a function

我想留意用户的朋友的变化'。像这样的查询会给我一个朋友列表:

{
    id: "0ab43d81-b883-424a-be56-32f9ff98f7d2",
    username: "testUser1234",
    friends: [
        "04423c56-1890-4028-b38a-cb9aff7112de" ,
        "05e4e613-2131-408c-b0ae-a952f3007405" ,
        "0395ee53-8ab0-48cc-aa4e-41aad93b8737"
    ]
}

但是,当我尝试最后抛出一个r.db("Test").table("Users").get("0ab43d81-b883-424a-be56-32f9ff98f7d2")("friends").map(function(id) { return r.db("Test").table("Users").get(id); }) 时,RethinkDB告诉我它不会工作:

.changes()

有没有让这个工作?我担心我唯一的选择是订阅朋友列表(在我的应用程序中)并在更改时更新订阅给实际的朋友:

RqlRuntimeError: Cannot call `changes` on an eager stream in:
r.db("Test").table("Users").get("0ab43d81-b883-424a-be56-32f9ff98f7d2")("friends").map(function(var_19) { return r.db("Test").table("Users").get(var_19); }).changes()

不是世界末日,但我真的很高兴能够完全在数据库中完成。

此外,任何人都可以解释一下"热切的流"是什么?我认为它与懒惰与即时评估有关,但我不知道如何判断标准是什么决定了流是否渴望。

2 个答案:

答案 0 :(得分:3)

我可以使用以下this post启发查询:

r.db("Test").table('Users').getAll(r.args(
    r.db('Test').table('Users').get("0ab43d81-b883-424a-be56-32f9ff98f7d2")('friends')
)).changes()

答案 1 :(得分:2)

您可以在某些转型之前附加r.db("Test") .table("Users") .get("0ab43d81-b883-424a-be56-32f9ff98f7d2") .changes() .getField('new_val')('friends') .map(function(id) { return r.db("Test").table("Users").get( id ); })

map

基本上,每次更改时,都会执行.changes功能。目前,这是使用li进行此类操作的唯一方法,但这将在即将推出的RethinkDB版本中发生变化。