2015-05-14 87 views
1

我想有多個查詢在一臺路由器的方法在我的index.js文件如下,多的MongoDB查詢的NodeJS

router.get('/users', function(req, res) { 
var db = req.db; 
var users = db.get('users'); 
var col_name=req.query.colname; 
var col_value=req.query.colvalue; 
var query={}; 
query[col_name]=col_value;  
console.log(col_name);  
console.log(col_value);  
console.log(query); 

//using this i would like to populate my dropdown list 

users.distinct('symbol',{limit: 10000},function(e, syms){  
res.send('users', {  
title: 'usersSym',  
'usersSym': syms   
}); 
}); 

// using this I would populate a table in html 

users.find(query,{limit: 10000},function(e, docs){ 
res.render('users', { 
title: 'Users', 
'users': docs 
}); 
}); 
}); 

在我.ejs文件我試圖做到以下幾點:

<html> 
<head> 
//drop down list populating with first query 
<select id="selected" name="colvalue" > 
<option value="">--Select--</option> 
<% usersSym.forEach(function(usersym) { %> 
<option value="<%= usersym.symbol %>"><%= usersym.symbol %></option> 
<% }); %> 
</select> 
//Table populating with second query 
<table > 
<tr > 
<th>Symbol</th> 
<th>Order_id</th> 
</tr> 
<tr> 
<% users.forEach(function(user) { %> 
<td ><%= user.symbol %></td> 
<td><%= user.order_id %></td> 
</tr> 
<% }); %> 
</table> 
</body> 
</head> 
</html> 

但沒有運氣。想知道我是否在正確的方向前進。如果不是,請以正確的方式引導我。

+0

看看[這個答案在這裏(http://stackoverflow.com/questions/29825166/how-to-return-multiple-mongoose-collections-in-one-get-request/ 29825572#29825572)。它可能會幫助你。 –

回答

1

// 1st fetch symbol users.distinct('symbol',{limit: 10000},function(e, syms){ // 2nd fetch [users] users.find(query,{limit: 10000},function(e, docs){ res.render('users', { usersSym: syms, users: docs } ); }); }); // P.S. do not forget to check on error on each callback

+0

謝謝,它工作 – sasidharan

1

您只能將數據發送回客戶端一次。一種方法是按順序完成所有這些數據庫查詢,然後發送所有數據。另一個可能是按照你的方式來做,檢查所有數據庫查詢的狀態,如果全部完成,則發送數據。