Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
firebase实时数据库在使用angularfire 2进行筛选后更新条目_Firebase_Firebase Realtime Database_Angularfire2 - Fatal编程技术网

firebase实时数据库在使用angularfire 2进行筛选后更新条目

firebase实时数据库在使用angularfire 2进行筛选后更新条目,firebase,firebase-realtime-database,angularfire2,Firebase,Firebase Realtime Database,Angularfire2,实时数据库中的数据结构如下: "orders" : { "-LM5p4tl7Og_PMJOspZ-" : { "customer" : { "_name" : "Vik Kumar", "_uid" : "oSEYj0zrkhPCk9r7uwyOOkHcqe53" }, "order" : { "_orderNumber" : "VikKumar-26954", "_orderStatus

实时数据库中的数据结构如下:

"orders" : {
    "-LM5p4tl7Og_PMJOspZ-" : {
      "customer" : {
        "_name" : "Vik Kumar",
        "_uid" : "oSEYj0zrkhPCk9r7uwyOOkHcqe53"
      },
      "order" : {
        "_orderNumber" : "VikKumar-26954",
        "_orderStatus" : "Pending",
        "_orderTotal" : 500,
      }
    },
    "-LM5s1wRCvqWA1vsZONy" : {
      "customer" : {
        "_name" : "Vik Kumar",
        "_uid" : "oSEYj0zrkhPCk9r7uwyOOkHcqe53"
      },
      "order" : {
        "_orderNumber" : "VikKumar-11423",
        "_orderStatus" : "Pending",
        "_orderTotal" : 500,
      }
    },
    "-LM5sOHzjLeqFGFleMxq" : {
      "customer" : {
        "_name" : "Vik Kumar",
        "_uid" : "oSEYj0zrkhPCk9r7uwyOOkHcqe53"
      },
      "order" : {
        "_orderNumber" : "VikKumar-63772",
        "_orderStatus" : "Pending",
        "_orderTotal" : 500,
      }
    }
}
我在我的ionic应用程序中使用angularfire2,并过滤以下几个订单:

getPendingOrders(dateStr:string){
    return new Promise((resolve, reject) =>
      {
        this.db.list('orders',
                     ref =>  ref.orderByChild("order/_date").equalTo(dateStr)
       ).valueChanges().subscribe(
        res => {
          resolve(res)
        },
        err => {
          console.log(err)
          reject(err)
        }
      )
      })
  }
上面的查询给了我如下的回答

[{"customer": {}, "order": {}}, {"customer": {}, "order": {}}]

我可以在UI中呈现它,我希望最终用户能够更新属性“\u orderStatus”的值。问题在于我查询数据的方式,我丢失了识别特定对象以更新它的键。请告知

好的,不确定这是否有帮助,我认为您已迁移到使用AngularFire 5.0。调用.valueChanges()将返回一个不带任何元数据的可观察对象(例如项键),您需要改用.snapshotChanges()调用:

this.db.list(...)
    .snapshotChanges()
    .map(changes => {
      return changes.map(change => ({key: change.payload.key, ...change.payload.val()}));
    })
    .subscribe(...)

这一次有什么帮助吗?