2017-06-08 13 views
-1

javascriptを使用してFirebaseデータベースからデータを取得する方法は?私はonceメソッドを使用して、常に変更を見逃していないようにしたい。このような例 :ファイヤーベースsnap.val()をvaribleに格納する方法elseを使用する場所は?

database.child('readOnly/something').once('value').then((snap) => { 
     const groupObj = [ 
      snap.val() 
     ] 
    }); 
    app.get('/something',(req,res)=>{ 
      res.render('something',{ 
       "groupList": groupObj 
      }); 
     }); 
      // Individual Life Groups 
      app.get('/something/:name',(req,res)=>{ 
       const group = req.path.split("/").pop(); 
       console.log(groupObj.length) 
       for (i = 0; i < groupObj.length; i+=1) { 
        if(groupObj[i].url == group){ 
         var desiredGroup = groupObj[i]; 
         console.log(desiredGroup); 
         break; 
        } 
       } 
       res.render('group', desiredGroup); 
       // To-Do: Add Data and Bindings 
      }); 

は私がexpressjs、firebase、nodejs、およびNPMの最新のバージョンまで使用しています。

+0

アプリケーションの寿命は同じですか?あなたはそれが変わることを期待していますか?すべてのリクエスト/ユーザーの間で共有されますか? –

+0

'/ something'が再び呼び出されるまで値は同じです –

+0

次に、必要なルートのすべての呼び出しで利用可能な場所にその値を格納して再利用するだけです。 –

答えて

0

すべてのコールバックで使用できるように、groupObj変数を「グローバル」領域に配置できます。

const groupObj = []; 

database.child('readOnly/something').once('value').then((snap) => { 
    groupObj.push(snap.val()); 
}); 

app.get('/something',(req,res)=>{ 
    res.render('something',{ 
     "groupList": groupObj 
    }); 
}); 

// Individual Life Groups 
app.get('/something/:name',(req,res)=>{ 
    const group = req.path.split("/").pop(); 
    console.log(groupObj.length) 
    for (i = 0; i < groupObj.length; i+=1) { 
     if(groupObj[i].url == group){ 
      var desiredGroup = groupObj[i]; 
      console.log(desiredGroup); 
      break; 
     } 
    } 
    res.render('group', desiredGroup); 
    // To-Do: Add Data and Bindings 
}); 
+0

私がそれをすると、空の配列 –

関連する問題