2017-07-30 79 views
0

我试图从数据库中的两个表中检索数据。但随着孩子它不工作如何从两个表中获取来自Firebase的所有子数据

我有这样的:

offers{ 
    "id" : { 
    "quantity": "50%" 
    "store" : { 
     "id" : true 
    } 
} 
"store":{ 
    "id":{ 
    address:"location" 
    "users":{ 
     "id": true 
    } 
    } 
} 
"users" : { 
    "name": "tom", 
    "lastname": "levine" 
} 

这是我的结构化数据我想从我的表像这样得到的所有子数据:

{ 
    "quantity":"50%", 
    "store":{ 
    address:"location", 
    "users":{ 
     "name": "tom", 
     "lastname": "levine" 
     } 
    } 
    } 
} 

我有这

const db = firebase.database(); 
db.ref('offers').child(id).once('value', (data) =>{ 
    console.log(data.val()) 
} 

但如果我添加另一个.child(商店),然后只是返回该商品的商店ID

我有优惠ID,我想要的商店ID和所有用户,如果有名称汤姆例如。

我该怎么做?

回答

1

您应该为您的数据库使用不同的结构。如果您希望存储数据,则NoSQL更具性能。

但是你可以做你想做的东西像什么:

(这只是一个例子,你可能需要更新和修复这些代码)

db.ref("offers").child(id).once("value", function(snapshot) { 
    var offerKey = snapshot.key; 
    var offerValue = snapshot.val(); 

    snapshot.forEach(function(childSnapshot) { 
     var offerChildKey = childSnapshot.key; 
     var offerChildData = childSnapshot.val(); 

     var quantity = offerChildData.quantity; 
     var store = offerChildData.store; 

     // Use quantity 

     Object.keys(store).forEach(function (storeKey) { 
      db.ref("store").child(storeKey).once("value", function(snapshot) { 
       var storeKey = snapshot.key; 
       var storeValue = snapshot.val(); 

       var address = storeValue.address; 
       var users = storeValue.users; 

       // Use address 

       Object.keys(users).forEach(function (userKey) { 
        db.ref("users").child(userKey).once("value", function(snapshot) { 
         var userKey = snapshot.key; 
         var userValue = snapshot.val(); 

         var name = userValue.name; 
         var lastname = userValue.lastname; 

         // Use name and lastname 
        } 
       }); 
      } 
     }); 
    }); 
} 
相关问题