0

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

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

当我运行hz serve时,出现此错误:

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

好的,好的,无效字段...但是我没有找到有关“有效”字段的任何信息。有人知道答案吗?我能做些什么?

我的问题:

  1. 如何在 ubuntu 上“永远”运行 Horizo​​n?现在我只使用 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?
           });
        });
    

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

谢谢你的帮助。

4

1 回答 1

1

由于 'fetch' 返回一个 RxJS 可观察对象,并且它只产生一个结果,因此您可以使用 'toPromise' 以方便的方式使用它。

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 await,只使用 Promise.then:

table.find(someId).fetch().toPromise().then((item1) => {
    table2.find(item1.id).fetch().toPromise().then((item2) => {
      // take over the world from here
    });
});
于 2016-09-27T13:21:56.537 回答