.remove()不能用于我的具体参考

时间:2018-05-25 22:46:18

标签: javascript firebase firebase-realtime-database

这是我的数据库:

enter image description here

我想删除“small_green”值,所以我正在尝试这个:

const refToDelete = firebase.database().ref().child('products').orderByChild('fruits').equalTo('small_green');
refToDelete.remove();

但它引发了这个错误:

enter image description here

我正在关注this教程和this文档。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您只能在remove()上致电DatabaseReference,这是对数据库中确切位置的引用。

您的firebase.database().ref().child('products').orderByChild('fruits').equalTo('small_green')是一个查询,它不是一个确切的位置。这意味着您无法在其上调用remove()。您首先必须执行查询以获取匹配的位置,然后在每个位置调用remove()

通常情况下,这将是:

const query = firebase.database().ref().child('products').orderByChild('fruits').equalTo('small_green');
query.once('value', functions(snapshot) {
  snapshot.forEach(function(childSnapshot) {
    childSnapshot.ref.remove();
  });
})

除了您在错误的子节点上订购(正如您在评论中所说)。所以你需要:

const query = firebase.database().ref().child('products/fruits').orderByChild('attrs').equalTo('small_green');