Horizo​​n / Ionic2返回一个值

时间:2016-08-24 18:59:48

标签: ionic2 rethinkdb horizon

我想使用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次......)。反正有没有返回这个值?

1 个答案:

答案 0 :(得分:1)

每当您从数据库或api中检索某些内容时,都应该使用此服务。它是为它制造的。

继续提问,exampleValue在这种情况下是未定义的,因为getValue不会等待table.find(1).fetch()中的订阅触发,从而返回未定义的内容。

您可以做的是,返回可观察对象并在ionViewLoaded订阅,或在Promise中制作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();
}