0

Horizo​​n を使用して Rethinkdb から値を返したい:

ionViewLoaded() {
  let exampleValue;
  exampleValue = this.getValue();

  console.log(exampleValue); // gives me "undefined"
}

getValue() {
   let hz = new Horizon({host: "localhost:3100"});
   hz.connect();
   let table = hz('values');

   table.find(1).fetch().subscribe((val) => {
     return val;
   });
}

関数の外でこの値が必要なので、単純な if/else ステートメントを書きたいと思います (これをクエリに実行すると、奇妙なエラーが発生します - ビューが 200 回以上リロードされています...)。とにかくこの値を返すことはありますか?

4

1 に答える 1

1

データベースまたは API から何かを取得するときはいつでも、これからサービスを作成する必要があります。そのために作られています。

質問に進みますが、サブスクリプションが起動するのを待たずに未定義を返すexampleValueため、この場合は未定義です。getValuetable.find(1).fetch()

あなたができることは、オブザーバブルを返し、それにサブスクライブするか、 inionViewLoadedを作成することです。PromisegetValue

オプション #1 のみを示します。

ionViewLoaded() {
  this.getValue().subscribe((exampleValue) => {
     console.log(exampleValue);
   });
}

getValue() {
   let hz = new Horizon({host: "localhost:3100"});
   hz.connect();
   let table = hz('values');

   return table.find(1).fetch();
}
于 2016-08-25T02:27:15.200 に答える