gpt4 book ai didi

firebase - 加入两个节点的 flutter firebase_database

转载 作者:IT王子 更新时间:2023-10-29 06:46:26 25 4
gpt4 key购买 nike

通常,您可以在 javascript 中使用 map 函数来更新返回的数据。我似乎无法在 Dart Streams 中找到允许这样做的方法。

例子 https://firebase.googleblog.com/2013/10/queries-part-1-common-sql-queries.html

var fb = new Firebase("https://examples-sql-queries.firebaseio.com/");
fb.child('user/123').once('value', function(userSnap) {
fb.child('media/123').once('value', function(mediaSnap) {
// extend function: https://gist.github.com/katowulf/6598238
console.log( extend({}, userSnap.val(), mediaSnap.val()) );
});
});

我正在尝试使用 flutter firebase_database。

  var _fireFollower =FirebaseDatabase.instance.reference()
.child('followers/' + auth.currentUser.uid);
_fireFollower.onValue.map((snap){
print(snap.snapshot.key);
});

但是 map 函数永远不会被调用,所以当它从 Firebase 获取时我无法加入任何其他数据。

此外,我尝试使用的是 FirebaseAnimatedList,所以如果我不做 map ,我该如何传递查询?

new FirebaseAnimatedList(
query: _fireFollower,
sort: (a, b) => b.key.compareTo(a.key),
padding: new EdgeInsets.all(8.0),
reverse: false,
itemBuilder: (_, DataSnapshot snapshot,
Animation<double> animation) {
return new Activity(
snapshot: snapshot, animation: animation);
},
),

最佳答案

在Flutter中,DatabaseReference.onValue是一个Stream,所以你必须调用Stream.listen听完之后取消 StreamSubscription。如果您只想获取一个值事件,则应改为调用 once() 来获取表示快照值的 Future。完成后,您将获得快照。

Future.wait([fb.child('media/123').once(), fb.child('user/123').once()])
.then((snapshots) => print("Snapshots are ${snapshots[0]} ${snapshots[1]}"));

如果您在 async 函数中执行此操作,这会更简单,因为您只需调用 await 即可获得 once() 的结果>:

print("Snapshots are ${await ref1.once()} ${await ref2.once()}");

关于firebase - 加入两个节点的 flutter firebase_database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44185979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com