firebase快照更改和角度2

firebase快照更改和角度2,firebase,angular,Firebase,Angular,我在firebase和angular2方面遇到了一个小问题。我正在加载一些小任务,用户可以应用它们 loadTask() { let post = [] const publicationRef = this.rootRef.child('task').child('attente'); const usersR = this.rootRef.child('users') return Observable.create((observer) => { this.geoQu

我在firebase和angular2方面遇到了一个小问题。我正在加载一些小任务,用户可以应用它们

loadTask() {
  let post = []
  const publicationRef = this.rootRef.child('task').child('attente');
  const usersR = this.rootRef.child('users')
return Observable.create((observer) => {
  this.geoQuery.on("key_entered", function(key, location, distance){
    publicationRef.child(key).on('value', snapshot => {
      const taskkey = snapshot.key()
      snapshot.forEach((data) => {
        const datakey = data.key();
        const dataVal = data.val();
        usersR.orderByKey().equalTo(dataVal.user).on('child_added', snapshot => {
          console.log({key: datakey,nom: snapshot.val().nom, distances: distance})
           post.push({nom: dataVal.nom, key: datakey,unom: snapshot.val().nom, uprenom: snapshot.val().prenom, distance: Math.floor(distance), uimage:snapshot.val().image, budget: dataVal.budget, description: dataVal.description, date:dataVal.date, location: dataVal.location, user: dataVal.user, id1: taskkey, id:datakey})
          observer.next(post)
        })
      })
    })
  })
})
}
所有的任务都会显示出来,但是当我应用到一个任务时,它会在dom中调用一个新的push方法,因此当我重新加载页面时,会出现一个具有相同值的新任务并显示出来。我试图取消推送方法

loadTask() {
  const publicationRef = this.rootRef.child('task').child('attente');
  const usersR = this.rootRef.child('users')
return Observable.create((observer) => {
  this.geoQuery.on("key_entered", function(key, location, distance){
    publicationRef.child(key).on('value', snapshot => {
      const taskkey = snapshot.key()
      snapshot.forEach((data) => {
        const datakey = data.key();
        const dataVal = data.val();
        usersR.orderByKey().equalTo(dataVal.user).on('child_added', snapshot => {
          console.log({key: datakey,nom: snapshot.val().nom, distances: distance})
          const publicio = [{nom: dataVal.nom, key: datakey,unom: snapshot.val().nom, uprenom: snapshot.val().prenom, distance: Math.floor(distance), uimage:snapshot.val().image, budget: dataVal.budget, description: dataVal.description, date:dataVal.date, location: dataVal.location, user: dataVal.user, id1: taskkey, id:datakey}]
          observer.next(publicio)
        })
      })
    })
  })
})
}
应用于任务不会添加具有相同值的新数据,但在dom中它只加载一组数据,而不是全部数据


嗨,阿德姆,谢谢你,安瑟,我已经试过了,没用
publicationRef.child(key).on('value', snapshot => {
  post = [];
  const taskkey = snapshot.key();
  .
  .
  .