尝试添加新密钥时,所有其他密钥都将被删除

When trying to add a new key, all other keys are deleted

我在向我的 RTDB 中的特定路径添加新密钥时遇到问题。

我正在尝试让这个脚本每次 运行 时,它都会创建一个新密钥,其 ID 比上一个大 1 个数字。

var usersRef = ref.child(`users/` + uid);
usersRef.once("value", function (data) {
    var currentID = data.val().currentID;
    var newID = currentID + 1;
    var usersRef = ref.child(`users/` + uid);
    usersRef.update({
        guilds: {
            [currentID]: guildID
        },
        currentID: newID
    });
});

此代码第一次运行良好(当 currentID 设置为 0 时),但每当我尝试使用同一脚本(使用不同的“currentID”)向“公会”路径添加更多键时,旧的条目被覆盖并消失。

理想情况下,我希望每次都在“公会”路径中添加一个新密钥,而不删除“公会”路径中已写入的先前密钥

Firebase 的 update 本质上在您传递给它的对象中的每个 top-level 键上充当 set。因此,在您的代码中,Firebase 仅更新 guildscurrentID 并保留 /users/$uid 下的其他属性未修改,但它完全替换了 guildscurrentID 的现有值使用您在此调用中指定的值。

如果您想在 guilds 下执行更精细的更新,请在 update 调用中指定其整个路径。所以像这样:

usersRef.update({
    `guilds/${currentID}`: guildID
    currentID: newID
});