2017-04-07 134 views
0

我想模仿我的Angular網站的右邊欄this example的功能。如何使用Angular/Express/MongoDB中的過濾器創建搜索?

我不知道這是叫什麼,甚至如何在前端或後端去做它!

我的假設:

  1. 與值從DB來直的,並且僅示出了期望的參數創建一個形式(即db.collection.find(查詢,{參數:1})其將被稱爲每次用戶修改表單時都會進行更新,另外,結果也會在選擇時更新(我有超過100MB的文檔,返回所有這些文檔都會很麻煩,我怎麼能限制返回的文檔數量,比如20或者50(用戶輸入)並分頁它(1000個文檔返回/ 50每頁= 20 '頁')

  2. 每個輸入第at被選中時,會返回{'field':value} - 但我不確定如何控制一個空值(即如果用戶不選擇燃料類型或傳輸範圍會怎樣?)

如何正確設計此功能?

回答

1

1)在您的查詢,使用限制聲明:

var options = { "limit": 20 } 
    collection.find({}, options).toArray(...); 

2),您可以驗證用戶空輸入(如with express-validator):

req.checkBody('postparam', 'Invalid postparam').notEmpty() 
req.getValidationResult().then(function(result) { 
    if (!result.isEmpty()) { 
     res.status(400).send('There have been validation errors: ' + util.inspect(result.array())); 
     return; 
} 

,並根據結果選擇默認值/ pass error/render請求頁面爲用戶

+0

如何使用express-validator刪除空字段({field1:「」}),並將非空字段傳遞給查詢? – Moshe

+0

檢查express-validator上的自定義驗證器 –

相關問題