Firebase实时数据库查询子子

时间:2018-04-05 03:45:15

标签: angular typescript firebase firebase-realtime-database

这就是我的数据库的样子: This is how my DB look like:

我设法通过查询userId

获取所有文档
this.orderListRef = firebase.database().ref(`/orderList`);
this.orderListRef.orderByChild('userId').equalTo(`${this.currentUser.uid}`)

但是我通过查询restId数组中的子键 order来获取所有文档时出现问题,我确实尝试了以下代码,但它只返回{{1 }}:

null

this.orderListRef.orderByChild('order/restId').equalTo('-L6vQHDBv9WugS_yTibn').on('value', snap => {
      console.log(snap.val())
    })

请帮助..我希望仅在this.orderListRef.child('order').orderByChild('restId').equalTo('-L6vQHDBv9WugS_yTibn').on('value', snap => { console.log(snap.val()) }) 密钥中返回包含"-L6vQHDBv9WugS_yTibn"的内容,例如:

restId

提前谢谢!

已编辑1: 在Frank van Puffelen提出创建-L9IZKHkueFppGMJY3Z9: {deliveryAddress: "Kuala Lumpur, Federal Territory of Kuala Lumpur, Malaysia", dtcreate: 1522894198149, order: Array(2), userId: "AeMgnwHy3Hav3FE9DyTMJVdp4QX2", userOrderNumber: "pGMJY3Z9"} -L9I_DcXgx_fjsmsn2rm: {deliveryAddress: "Kuala Lumpur, Federal Territory of Kuala Lumpur, Malaysia", dtcreate: 1522894433661, order: Array(2), userId: "AeMgnwHy3Hav3FE9DyTMJVdp4QX2", userOrderNumber: "jsmsn2rm"} -L9IksHXG4WZo0ejfmk1: {deliveryAddress: "Kuala Lumpur, Federal Territory of Kuala Lumpur, Malaysia", dtcreate: 1522897487221, order: Array(2), userId: "AeMgnwHy3Hav3FE9DyTMJVdp4QX2", userOrderNumber: "o0ejfmk1"} 作为orderList>的子项的方法之后身份证,我发现这是个好主意,我试过,但仍然没有运气。

下面是我的数据库的新屏幕截图: enter image description here

我尝试了以下查询,但每个人仍然返回restaurant

null

感谢您的回复!

1 个答案:

答案 0 :(得分:0)

没有字段order/restId字段order/0/restIdorder/1/restId,但由于这不是固定路径,因此您无法对其进行查询。

您当前的数据结构适合查找给定订单的餐馆ID。它不适合查找给定餐馆ID的订单。为此,您应该扩展数据结构以获得反转数据:

restaurants
  restaurantId1
    order1: true
    order3: true
  restaurantId2
    order2: true

现在,您可以在/restaurants/$restaurantId下查找给定餐厅的订单。

有关详情,请参阅: