AngularFire2检索$ value和$ key

时间:2017-11-23 00:50:01

标签: jquery firebase ionic-framework ionic3 angularfire2

我正在处理一个简单的朋友添加 - 删除页面。

我的数据非常简单:

{
  "usernameToUid" : {
    "test1" : "JEhnsK6igwh69iX6pZo4cJMGL5L2",
    "test2" : "0OhZ5eE27wOkTLE8C0PQHKTkYxk1"
  },
  "users" : {
    "0OhZ5eE27wOkTLE8C0PQHKTkYxk1" : {
      "friends" : {
        "test1" : "JEhnsK6igwh69iX6pZo4cJMGL5L2"
      },
      "profile" : {
        "firstName" : "Walter",
        "lastName" : "White",
        "username" : "test2"
      }
    },
    "JEhnsK6igwh69iX6pZo4cJMGL5L2" : {
      "friends" : {
        "test2" : "0OhZ5eE27wOkTLE8C0PQHKTkYxk1"
      },
      "profile" : {
        "firstName" : "Jesse",
        "lastName" : "Pinkman",
        "username" : "test1"
      }
    }
  }
}

html上有一个朋友列表和一个滑动删除按钮;

 <ion-item-sliding *ngFor="let friend of friendsArray; let i = index">
        <ion-item>
          <h2>{{friend.firstName}} {{friend.lastName}}</h2>
          <p> {{friend.$key}} </p>
        </ion-item>

          <ion-item-options side="right">
            <button ion-button color="danger" (click)="deleteFriend(i)">
              <ion-icon name="delete"></ion-icon>
              &nbsp;Delete&nbsp;
            </button>
          </ion-item-options>
      </ion-item-sliding>

和.ts功能:

deleteFriend(i) {
        console.log(this.friendsArray[i].$key)
        console.log(this.friendsArray[i].$value)
        this.afDatabase.list(`users/${this.myUid}/friends/`).remove(`${this.friendsArray[i].$key}`)
        this.afDatabase.list(`users/${this.friendsArray[i].$value}/friends/`).remove(`${this.myUsername}`)
}

在这段代码中,friendsArray [i]。$ value是目标用户id,friendsArray [i]。$ key是目标用户的用户名。

当我单击删除按钮时,控制台完全返回列表中单击用户的$ value和$ key。但是,出现这样的错误:

ERROR TypeError: Cannot read property '$value' of undefined

我可以记录值和密钥,但我不能在代码中使用它为什么?以及如何解决它?

1 个答案:

答案 0 :(得分:0)

我解决了这个问题的不同和简单的方法,但仍然不知道它为什么会起作用。

刚刚创建了两个字符串变量,并将它们用于$ key和$ value

    this.friendIndexUsername = this.friendsArray[i].$key
    this.friendIndexUid = this.friendsArray[i].$value


    this.afDatabase.list(`users/${this.myUid}/friends/`).remove(`${this.friendIndexUsername}`)
    this.afDatabase.list(`users/${this.friendIndexUid}/friends/`).remove(`${this.myUsername}`)

的工作。但有人可以点亮我的原因吗?