2017-04-24 98 views
3

我需要從兩個不同的mongodb集合中將兩組數據加載到一個頁面上。
我的路線頁面,使得通過貓鼬的請求是這樣的如何在一個app.get請求中返回多個Mongodb集合?

app.get('/testPage', function(req,res){ 
    dbReadOne.find({}, '', function(error, dataOne){ 
     res.json(dataOne); 
    }); 
    dbReadTwo.find({},'', function(error, dataTwo){ 
     res.json(dataTwo); 
    }); 
}); 

我的角度工廠看起來像這樣

app.factory('dataOneFactory', function($resource){ 
    return $resource('testPage/:dataOne', {}, { 
     query: { method: 'GET', params: {symbol: 'dataOne'}, isArray: true} 
    }) 
}); 
app.factory('dataTwoFactory', function($resource){ 
    return $resource('testPage/:dataTwo', {}, { 
     query: { method: 'GET', params: {customList: 'dataTwo'}, isArray: true} 
    }) 
}); 

我如何做到這一點完全喪失。我會很感激我在這個問題上得到的任何建議。謝謝。

回答

1

由於Node.js的在本質上是異步的,dbReadOne.find功能異步運行,因此,你應該叫下一個dbReadOne.find在第一dbReadOne.find功能的回調。

例子:

app.get('/testPage', function(req,res){ 
    dbReadOne.find({}, '', function(error, dataOne){ 
     dbReadTwo.find({},'', function(error, dataTwo){ 
      res.json({ 
       dataOne: dataOne, 
       dataTwo: dataTwo 
      }); 
     }); 
    }); 
}); 
+0

這些不依賴於對方。 Promise.all應該用來代替 –

+0

如果他們不互相依賴,爲什麼我們要使用** Promise.all **並等待每一件事情都解決/拒絕? –

+0

如果發生錯誤,請求**應該**失敗。你的例子沒有錯誤處理。客戶端開發人員知道是否存在服務器錯誤很重要。請注意,返回0行不是錯誤。 –

相關問題