Firebase Web - .remove() 似乎不起作用
Firebase Web - .remove() seems like it's not working
我正在编写一个访问 Firebase 实时数据库的 Web 应用程序。我刚开始在删除我的应用程序中的记录时出现间歇性问题。我连续两行应该删除两个不同的记录。问题的第一个迹象是我将发送删除两条记录的命令,但只有第一条会删除。
我在故障排除中尝试了几件事。我尝试按照 https://firebase.google.com/docs/database/web/read-and-write#delete_data. I also added .then() and .catch() commands as described https://firebase.google.com/docs/reference/js/firebase.database.Reference#remove 中的说明将 .remove() 替换为 .set(null)。更改命令的顺序最终使两个 .remove() 命令暂时起作用。片刻之后,经过进一步测试,我发现 .remove() 命令都不起作用。
我怀疑该问题可能与 https://firebase.google.com/support/release-notes/js?authuser=0 所述的今天发布的新版本有关。一旦我看到有更新,我就更新了我的 html 文档中的导入行,这并没有造成任何明显的差异。
这是我的应用程序中应该进行删除的代码片段。请注意,等效代码在 12 小时前运行,因此我认为引用不是问题所在。另请注意,即使 .catch() 调用中应捕获失败的 .remove() 或 .set(null),Firebase 也不会提供任何错误。
$("#edit-event-delete-btn").click(function(){
bootbox.confirm({
message: "Are you sure you want to delete this event?",
callback: function (result) {
if (result) {
var eventRef = firebase.database().ref("events/" + editEventEventSelectInputJQ.val());
var userEventRef = firebase.database().ref("users/" + firebase.auth().currentUser.uid + "/events/" + editEventEventSelectInputJQ.val())
eventRef.set(null)
.then(function() {
console.log("Remove succeeded.")
})
.catch(function(error) {
console.log("Remove failed: " + error.message)
});
userEventRef.set(null)
.then(function() {
console.log("Remove succeeded.")
})
.catch(function(error) {
console.log("Remove failed: " + error.message)
});
}
}
})
});
我只是在这里问,因为 Google 建议先在这里问,然后再问他们。
如果有任何有用的意见,我将不胜感激。
**更新**
这是我的 Firebase 数据库规则:
{
"rules": {
".read": "true",
".write": "auth != null"
}
}
而here是我数据库的截图
我要检查两件事;
- 您的 firebase 规则是什么样的,您是否有权删除该对象?我想是的,因为 firebase 没有 return 任何错误。
检查您要删除的路径,您确定它是正确的吗?尝试 运行 下面的代码,路径是否正确?
$("#edit-event-delete-btn").click(function(){
bootbox.confirm({
message: "Are you sure you want to delete this event?",
callback: function (result) {
if (result) {
var eventPath = "events/" + editEventEventSelectInputJQ.val();
var eventRef = firebase.database().ref(eventPath);
var userEventPath = "users/" + firebase.auth().currentUser.uid + "/events/" + editEventEventSelectInputJQ.val();
var userEventRef = firebase.database().ref(userEventPath)
eventRef.set(null)
.then(function() {
console.log("Remove succeeded.", eventPath)
})
.catch(function(error) {
console.log("Remove failed: " + error.message, eventPath)
});
userEventRef.set(null)
.then(function() {
console.log("Remove succeeded.", userEventPath)
})
.catch(function(error) {
console.log("Remove failed: " + error.message, userEventPath)
});
}
}
})
});
Try this way ..
But I have to ask , what is the value come from this "editEventEventSelectInputJQ.val()", is it object Id or Value object?
$("#edit-event-delete-btn").click(function(){
bootbox.confirm({
message: "Are you sure you want to delete this event?",
callback: function (result) {
if (result) {
var object={}
object["events/" + editEventEventSelectInputJQ.val()]=null;
firebase.database().ref().update(object).then(function(success){
console.log("success")
}).catch((error)=>{
console.error("Error: " + error.code);
});
}
}
})
});
我正在编写一个访问 Firebase 实时数据库的 Web 应用程序。我刚开始在删除我的应用程序中的记录时出现间歇性问题。我连续两行应该删除两个不同的记录。问题的第一个迹象是我将发送删除两条记录的命令,但只有第一条会删除。
我在故障排除中尝试了几件事。我尝试按照 https://firebase.google.com/docs/database/web/read-and-write#delete_data. I also added .then() and .catch() commands as described https://firebase.google.com/docs/reference/js/firebase.database.Reference#remove 中的说明将 .remove() 替换为 .set(null)。更改命令的顺序最终使两个 .remove() 命令暂时起作用。片刻之后,经过进一步测试,我发现 .remove() 命令都不起作用。
我怀疑该问题可能与 https://firebase.google.com/support/release-notes/js?authuser=0 所述的今天发布的新版本有关。一旦我看到有更新,我就更新了我的 html 文档中的导入行,这并没有造成任何明显的差异。
这是我的应用程序中应该进行删除的代码片段。请注意,等效代码在 12 小时前运行,因此我认为引用不是问题所在。另请注意,即使 .catch() 调用中应捕获失败的 .remove() 或 .set(null),Firebase 也不会提供任何错误。
$("#edit-event-delete-btn").click(function(){
bootbox.confirm({
message: "Are you sure you want to delete this event?",
callback: function (result) {
if (result) {
var eventRef = firebase.database().ref("events/" + editEventEventSelectInputJQ.val());
var userEventRef = firebase.database().ref("users/" + firebase.auth().currentUser.uid + "/events/" + editEventEventSelectInputJQ.val())
eventRef.set(null)
.then(function() {
console.log("Remove succeeded.")
})
.catch(function(error) {
console.log("Remove failed: " + error.message)
});
userEventRef.set(null)
.then(function() {
console.log("Remove succeeded.")
})
.catch(function(error) {
console.log("Remove failed: " + error.message)
});
}
}
})
});
我只是在这里问,因为 Google 建议先在这里问,然后再问他们。
如果有任何有用的意见,我将不胜感激。
**更新**
这是我的 Firebase 数据库规则:
{
"rules": {
".read": "true",
".write": "auth != null"
}
}
而here是我数据库的截图
我要检查两件事;
- 您的 firebase 规则是什么样的,您是否有权删除该对象?我想是的,因为 firebase 没有 return 任何错误。
检查您要删除的路径,您确定它是正确的吗?尝试 运行 下面的代码,路径是否正确?
$("#edit-event-delete-btn").click(function(){ bootbox.confirm({ message: "Are you sure you want to delete this event?", callback: function (result) { if (result) { var eventPath = "events/" + editEventEventSelectInputJQ.val(); var eventRef = firebase.database().ref(eventPath); var userEventPath = "users/" + firebase.auth().currentUser.uid + "/events/" + editEventEventSelectInputJQ.val(); var userEventRef = firebase.database().ref(userEventPath) eventRef.set(null) .then(function() { console.log("Remove succeeded.", eventPath) }) .catch(function(error) { console.log("Remove failed: " + error.message, eventPath) }); userEventRef.set(null) .then(function() { console.log("Remove succeeded.", userEventPath) }) .catch(function(error) { console.log("Remove failed: " + error.message, userEventPath) }); } } }) });
Try this way ..
But I have to ask , what is the value come from this "editEventEventSelectInputJQ.val()", is it object Id or Value object?
$("#edit-event-delete-btn").click(function(){
bootbox.confirm({
message: "Are you sure you want to delete this event?",
callback: function (result) {
if (result) {
var object={}
object["events/" + editEventEventSelectInputJQ.val()]=null;
firebase.database().ref().update(object).then(function(success){
console.log("success")
}).catch((error)=>{
console.error("Error: " + error.code);
});
}
}
})
});