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在这种情况下是未定义的,因为getValue不等待订阅触发table.find(1).fetch()因此返回未定义。

您可以做的是,返回 observable 并在您的ionViewLoadedPromise在中订阅它getValue

我将只演示选项#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 回答