angularfirebase2 列表查询返回未定义
angularfirebase2 list query returning undefined
我一定是对 RxJs 和 AngularFirebase2 有严重的误解,因为我无法弄清楚这个错误。
我有一个 firebase 列表,我正在使用服务中的函数进行查询,如下所示:
returnAuthor(id) {
this.db.list('/flamelink/users', ref => ref.orderByChild('id').equalTo(id)).valueChanges().subscribe(data => { console.log(data); return data })
}
returnAuthor
中的 console.log(data)
生成了正确的数据,但我的模板 returns undefined
中的 {{ returnAuthor(id) }}
生成了正确的数据。 运行 returnAuthor
在我的组件中也 returns undefined
.
有人可以在这里为我指明正确的方向吗?我需要订阅组件而不是服务吗?
您的方法 return 未定义,因为您没有 return 从函数中获取结果。
要 return 结果,您的函数将如下所示
returnAuthor(id) {
return this.db.list('/flamelink/users', ref => ref.orderByChild('id').equalTo(id)).valueChanges().subscribe(data => { console.log(data); return data })
}
但是 return 这样 return 订阅不是数据。如果您想要订阅中的数据,您可以声明一个变量并将订阅中的数据 return 设置到它。像这样
在你的class
dataVariable;
returnAuthor(id) {
this.db.list('/flamelink/users', ref => ref.orderByChild('id').equalTo(id)).valueChanges().subscribe(data => { console.log(data); this.dataVariable = data })
}
现在订阅中可用的数据将传递到您可以使用的dataVariable
。
如果你想在数据到达时将数据传递给另一个方法,你可以在订阅中调用该方法。像这样
returnAuthor(id) {
this.db.list('/flamelink/users', ref => ref.orderByChild('id').equalTo(id)).valueChanges().subscribe(data => { console.log(data); anotherMethod(data); })
}
我一定是对 RxJs 和 AngularFirebase2 有严重的误解,因为我无法弄清楚这个错误。
我有一个 firebase 列表,我正在使用服务中的函数进行查询,如下所示:
returnAuthor(id) {
this.db.list('/flamelink/users', ref => ref.orderByChild('id').equalTo(id)).valueChanges().subscribe(data => { console.log(data); return data })
}
returnAuthor
中的 console.log(data)
生成了正确的数据,但我的模板 returns undefined
中的 {{ returnAuthor(id) }}
生成了正确的数据。 运行 returnAuthor
在我的组件中也 returns undefined
.
有人可以在这里为我指明正确的方向吗?我需要订阅组件而不是服务吗?
您的方法 return 未定义,因为您没有 return 从函数中获取结果。 要 return 结果,您的函数将如下所示
returnAuthor(id) {
return this.db.list('/flamelink/users', ref => ref.orderByChild('id').equalTo(id)).valueChanges().subscribe(data => { console.log(data); return data })
}
但是 return 这样 return 订阅不是数据。如果您想要订阅中的数据,您可以声明一个变量并将订阅中的数据 return 设置到它。像这样
在你的class
dataVariable;
returnAuthor(id) {
this.db.list('/flamelink/users', ref => ref.orderByChild('id').equalTo(id)).valueChanges().subscribe(data => { console.log(data); this.dataVariable = data })
}
现在订阅中可用的数据将传递到您可以使用的dataVariable
。
如果你想在数据到达时将数据传递给另一个方法,你可以在订阅中调用该方法。像这样
returnAuthor(id) {
this.db.list('/flamelink/users', ref => ref.orderByChild('id').equalTo(id)).valueChanges().subscribe(data => { console.log(data); anotherMethod(data); })
}