尝试添加新密钥时,所有其他密钥都将被删除
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 仅更新 guilds
和 currentID
并保留 /users/$uid
下的其他属性未修改,但它完全替换了 guilds
和 currentID
的现有值使用您在此调用中指定的值。
如果您想在 guilds
下执行更精细的更新,请在 update
调用中指定其整个路径。所以像这样:
usersRef.update({
`guilds/${currentID}`: guildID
currentID: newID
});
我在向我的 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 仅更新 guilds
和 currentID
并保留 /users/$uid
下的其他属性未修改,但它完全替换了 guilds
和 currentID
的现有值使用您在此调用中指定的值。
如果您想在 guilds
下执行更精细的更新,请在 update
调用中指定其整个路径。所以像这样:
usersRef.update({
`guilds/${currentID}`: guildID
currentID: newID
});