0

Horizo​​n について 1 つの誤りと 2 つの質問があります。( 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?
           });
        });
    

    たとえば、地平線のクエリから値を返し、この値を他のクエリ内で使用するにはどうすればよいですか? 私はそれをすべて1つの関数に書きたくありません...

助けてくれてありがとう。

4

1 に答える 1

1

「fetch」は RxJS オブザーバブルを返し、1 つの結果しか得られないため、「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 を待機せずに、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 に答える