我想使用Horizon从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次......)。反正有没有返回这个值?
答案 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();
}