【问题标题】:push data to firebase using child reference values使用子参考值将数据推送到 Firebase
【发布时间】:2019-01-27 14:49:45
【问题描述】:

我想使用 nodejs 将数据推送到 firebase。 我有一个包含 MACID 值的字符串,我想检索 MACID=macid 的键(存储在 firebase 中)。和模型(存储在 firebase 中)。

据此,我想推送类似'的数据 真实数据={ 温度:“萨萨德”, 湿度:“123dsad4”, 时间戳:“dfssdsdf”, }

firebase 就像

如图所示,每个用户都有许多设备。我想在 macid=MACID 的地方推送数据。我只有 MACID 可以比较。

如何将数据推送到 macid=MACID 的 firebase 并将其存储,如图所示。

提前致谢。

【问题讨论】:

    标签: node.js firebase firebase-realtime-database


    【解决方案1】:

    如果您知道 UID,则可以查询该用户的设备以查找与 MACID 匹配的设备。

    firebase.database().ref("users").child(uid).orderByChild("macid").equalTo(macId)
    

    如果您不知道用户的 UID,则无法使用您当前的数据结构进行查询。您将需要添加一个将 MACID 映射到 UID 的附加列表,例如

    "macids": {
      "dasdad": "h1Eg5...."
      "dasasd": "h1Eg5...."
    }
    

    另见:

    【讨论】:

    • 在将 macid 映射到 uid 后,我如何将数据推送为引用那些 macid 和 uid。
    【解决方案2】:

    如果我对您的理解正确,您希望通过查询嵌套两层的字段(即在用户对象内,然后在设备对象内)来查找“用户”ID(顶级)。

    这对于当前格式的数据库是不可能的 - 请参阅此问题:Deep path query using wildcard as a path(在您的实例中,“通配符”将是设备 ID)。

    我建议您构建您的数据库,以便您拥有设备和用户列表。例如:

    users:
      -userId:
         -devices:
            -device ID:true,
            -device ID:true,
            -device ID:true
             etc....
    
    devices:
      -deviceID:
         -users:
            -user ID:true,
            -user ID:true,
            -user ID:true
         -MACID: _____,
         -realData: _____,
         -etc...
    

    *我不确定是 [user ID]:[true] 还是 [randomPushedId]:[user Id] 更好 - 但两者的效果相同。也许有人可以对此进行补充。

    然后您可以通过 MACID 查询您的“设备”节点。比如:

    yourDatabaseRef.child("devices").orderByChild("MACID").equalTo([YOURMACIDHERE])
    .once('value', (response) => { // GET KEY, THEN MAKE THE UPDATE })
    

    在这种情况下,您实际上并没有将“用户”节点用于任何事情 - 但我想您需要它来做某事。

    最重要的是考虑如何您将实际读取您的数据,然后确定您的数据库应该如何构建。例如,如果您永远不会按用户获取设备列表,则无需将设备引用添加到用户节点。

    【讨论】:

      猜你喜欢
      • 2015-01-22
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多