Firebase - 在对多个节点执行 update/fanout 时设置优先级

Firebase - set priority when doing an update/fanout to several nodes

我正在一次更新中写入多个 parts/nodes 的 Firebase 数据库。这样做时是否可以设置节点的优先级?示例:

firebaseRef.update([
    "/some/node/": "value",
    "/some/other/node": "other value"
])

如果我想同时将节点的优先级设置为“/some/other/node”怎么办?那可能吗?类似于:

firebaseRef.update([
    "/some/node/": "value",
    "/some/other/node": {
        value: "other value",
        priority:  0 - Date.now()
    }
])

你几乎明白了,"magic" 属性 被命名为 .priority:

firebaseRef.update([
    "/some/node/": "value",
    "/some/other/node": {
        value: "other value",
        ".priority":  0 - Date.now()
    }
]

请注意,在 Firebase 中使用优先级的理由并不多。添加一个通常命名的 属性(例如 "reversedTimestamp": 0 - Date.now())将实现相同的效果并且更少 hidden/magic.

更新

您似乎想更新节点的值,而不是子节点的命名值。要一次性设置(原始)值和优先级,请使用:

firebaseRef.update([
    "/some/node/": "value",
    "/some/other/node": {
        ".value": "other value",
        ".priority":  0 - Date.now()
    }
]);

我推荐使用:

".priority": Firebase.ServerValue.TIMESTAMP

它从服务器创建时间戳。它确保我们的数据按照创建时的顺序排列,即使我们的客户位于不同的时区。