android - 如何让 Firebase 在数据库的三个不同区域显示相同的 id?

标签 android ios swift firebase

我有一个使用 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/

相关文章:

ios - 如何使用 uiactivityviewcontroller 修复默认弹出菜单

ios - 带有部分和搜索字段的 UITableView

swift - 全局变量似乎失去了值(value)( swift )

swift - 如何在 Swift 2.0 中使用 guard "strongify"optional self

java - 在 android 中使用微调器过滤 Listview

android - 您可以在发布应用后测试 Google Play 应用内结算吗?

java - Android数据报套接字用于udp发送

java - Maven 不会运行 Android 仪器测试

ios - 如何更改应用的捆绑ID和应用名称

ios - 从第二个 View 返回到一个 View 时,UIButton 不可单击