我有一个使用 firebase-functions 的应用程序,Android 和 iOS 都使用该功能。
使用以下Android recordToFirebase() 方法:
- 它添加了一个“历史”节点
- 它为用户/司机和用户/乘客添加了一个“历史”节点
- 它将用户/司机和用户/乘客中的 id 设置为 true
DatabaseReference riderRef = FirebaseDatabase.getInstance().getReference("Users/Riders").child(riderId).child("history");
DatabaseReference driverRef = FirebaseDatabase.getInstance().getReference("Users/Drivers").child(driverId).child("history");
final DatabaseReference historyRef = FirebaseDatabase.getInstance().getReference().child("history");
requestId = historyRef.push().getKey(); // same key for all 3 refs
driverRef.child(requestId).setValue(true);
riderRef.child(requestId).setValue(true);
当在 Android 中运行上述代码时,它应该在数据库中执行此操作,它 确实如此,它还为所有 3 个(历史记录/ID、用户/驾驶员/历史记录/ID、用户/乘客/历史记录/ID)分配标志 ID:
- Users
- Drivers
- history
- Ljdfuhkd8_kdnjd : true
- Riders
- history
- Ljdfuhkd8_kdnjd : true
- history
- Ljdfuhkd8_kdnjd
- email: <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="cba6ae8ba6aee5a8a4a6" rel="noreferrer noopener nofollow">[email protected]</a>
在iOS中,相同的方法(与Android相同,只是在Swift中):
let historyRef = ref.child("history")
let riderRef = ref.child("Users/Riders").child(riderID).child("history")
let driverRef = ref.child("Users/Drivers").child(driverID).child("history")
driverRef.childByAutoId().setValue(true)
riderRef.childByAutoId().setValue(true)
当上面的 Swift 方法运行时,它不会做 Android 代码所做的事情, 它为所有三个分配了不同的 id。
如何重写此代码以使其像在 Android 代码中一样工作?
最佳答案
对于 iOS:
let historyRef = ref.child("history")
let riderRef = ref.child("Users/Riders").child(riderID).child("history")
let driverRef = ref.child("Users/Drivers").child(driverID).child("history")
let key = historyRef.childByAutoId().key
historyRef.child(key).setValue(true)
riderRef.child(key).setValue(true)
driverRef.child(key).setValue(true)
关于android - 如何让 Firebase 在数据库的三个不同区域显示相同的 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53737939/