我有一个用户表,每个用户都有一系列朋友。
其中的文档如下所示:
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()
不是世界末日,但我真的很高兴能够完全在数据库中完成。
此外,任何人都可以解释一下"热切的流"是什么?我认为它与懒惰与即时评估有关,但我不知道如何判断标准是什么决定了流是否渴望。
答案 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版本中发生变化。