【问题标题】:Deleting a node from firebase database using firebase cloud functions使用 firebase 云函数从 firebase 数据库中删除节点
【发布时间】:2017-12-26 18:06:32
【问题描述】:

我正在尝试创建一个 Firebase 云功能来从 Firebase 数据库中删除一个节点。日志消息显示该函数执行“正常”,但似乎没有从数据库中删除任何元素。我从How to delete data in Firebase? 中接受的答案中编写了函数以获取帮助 这是代码的sn-p

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

//path is defined as the value to be deleted,
console.log("Deleting element " + path);
var ref = admin.database().ref("/")
ref.orderByValue().equalTo(path).on('child_added', function(snapshot) {
    console.log("Snapshot.ref = " + snapshot.ref);
    snapshot.ref.remove();
    return;
});

另外,在上面的代码中,“删除元素路径值”确实出现在日志中,但 Snapshot.ref = ... 没有出现。

我还没有足够的积分来嵌入图像,所以这里是我的数据库的链接 Structure of Firebase Database

【问题讨论】:

  • 我觉得选错了。
  • 你是怎么触发这个功能的? Cloud Functions for Firebase 一旦被事件触发就会运行。您用来触发此事件的事件是什么? HTTP 触发器?数据库写入事件?

标签: javascript firebase firebase-realtime-database google-cloud-functions


【解决方案1】:

我认为选择是错误的。仔细检查 ref.orderByValue().equalTo(path) 是否实际上等于某个值。

ref.once('value')
  .then(function(dataSnapshot) {
    // handle read data.
  });

https://firebase.google.com/docs/reference/admin/node/admin.database.Reference

var adaRef = admin.database().ref('users/ada');
adaRef.remove()
  .then(function() {
    console.log("Remove succeeded.")
  })
  .catch(function(error) {
    console.log("Remove failed: " + error.message)
  });

【讨论】:

  • 这行得通,虽然不像预期的那样;它删除了我数据库的所有内容。日志显示“Snapshot.ref = application.firebaseio.com”。您能帮我导航到正确的参考位置吗?
  • 在 Firebase 中,您可以导航到某个节点,然后复制 URL。这应该可以帮助您找到所需的确切位置。在您的示例中, var ref = admin.database().ref("/"), "/" 应该是您要删除的节点的路径。
  • 谢谢。这应该可以帮助我找到解决办法。我接受了你的回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-15
  • 2018-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-11
相关资源
最近更新 更多