Horizo​​n / RethinkDB api

时间:2016-09-25 11:11:41

标签: rethinkdb horizon

所以我有一个关于Horizo​​n的错误和两个问题。 (http://horizon.io/docs/) 我有一个简单的表和1个记录,这是行:

id: "o34242-43251-462...",
user_id: "3lw5-6232s2...",
other_id: "531h51-51351..."

当我运行 hz serve 时,我收到此错误:

意外的索引名称(无效字段):" hz _ [[" user_id"],[[" other_id"," 0" ]]]"

好的,好的,无效的字段......但我没有找到关于"有效"的任何信息。领域。有人知道答案吗?我能做什么?

我的问题:

  1. 如何运行Horizo​​n"永远"在ubuntu上?现在我只使用hz serve和"&",
  2. 如果我的查询很少,例如:

    let table = this.horizon('firstTable');
    let table2 = this.horizon('secondTable');
    
        table.find(someId).fetch().subscribe((item) => {
           //and then I want to run other query, e.g: 
           table2.find(item.id).fetch().subscribe((value) => {
           //and here again run other query... <-- how to avoid this?
           });
        });
    

    如何从视图的查询中返回一个值,然后在其他查询中使用此值?我不想把它全部写在一个函数中......

  3. 感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

因为&#39; fetch&#39;返回一个RxJS observable,它只产生一个结果,你可以使用&#39; toPromise&#39;以方便的方式消费它。

let table = this.horizon('firstTable');
let table2 = this.horizon('secondTable');

let item1 = await table.find(someId).fetch().toPromise();
let item2 = await table2.find(item1.id).fetch().toPromise();

或者没有ES7等待,只需使用Promise.then:

table.find(someId).fetch().toPromise().then((item1) => {
    table2.find(item1.id).fetch().toPromise().then((item2) => {
      // take over the world from here
    });
});