代码之家  ›  专栏  ›  技术社区  ›  Ciprian

从Firebase数据库中删除值

  •  0
  • Ciprian  · 技术社区  · 8 年前

    我正在使用OneSignal从云函数发送推送通知。OneSignal响应还向我发送一个带有 player ids 这没用。我想从数据库中删除它们。有没有什么方法可以在不知道原因的情况下删除它们 userKey ?

    数据库:

    playerIds
        userKey
          player_id1: true,
          plaher_id2: true
    

    云功能:

          let errors = response.errors.invalid_player_ids;
    
          let playerIdsRef = admin.database().ref('/playerIds/');
    
          for (let error of errors) {
            console.log(error)
            playerIdsRef.orderByChild(error).equalTo(true).on("value", function (snapshot) {
              console.log(snapshot);
              console.log(snapshot.val()); //this returns null
              snapshot.delete(); // this returns snapshot.delete is not a function
    
            });
          }
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Ciprian    8 年前

    这就是我解决问题的方法:

        if (response.errors.invalid_player_ids.length > 0) {
          const errors = response.errors.invalid_player_ids;
          const playerIdsRef = admin.database().ref('/playerIds/');
    
          for (let error of errors) {
            playerIdsRef.orderByChild(error).equalTo(true).once("value", (snapshot) {
              const snapshotValue = snapshot.val();
              const key = Object.keys(snapshotValue)[0];
              //or
              //const key = Object.keys(snapshot.val())[0];
              playerIdsRef.child(key).child(error).set(null);
            });
          }
        }