如何使用Angular/Express/MongoDB中的过滤器创建搜索?
问题描述:
我想模仿我的Angular网站的右边栏this example的功能。如何使用Angular/Express/MongoDB中的过滤器创建搜索?
我不知道这是叫什么,甚至如何在前端或后端去做它!
我的假设:
与值从DB来直的,并且仅示出了期望的参数创建一个形式(即db.collection.find(查询,{参数:1})其将被称为每次用户修改表单时都会进行更新,另外,结果也会在选择时更新(我有超过100MB的文档,返回所有这些文档都会很麻烦,我怎么能限制返回的文档数量,比如20或者50(用户输入)并分页它(1000个文档返回/ 50每页= 20 '页')
每个输入第at被选中时,会返回{'field':value} - 但我不确定如何控制一个空值(即如果用户不选择燃料类型或传输范围会怎样?)
如何正确设计此功能?
答
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请求页面为用户
如何使用express-validator删除空字段({field1:“”}),并将非空字段传递给查询? – Moshe
检查express-validator上的自定义验证器 –