【发布时间】:2017-08-13 16:12:21
【问题描述】:
我正在使用 Express + MongoDB 本机驱动程序(不是 MONGOOSE),我想创建一个 API 端点,可以“过滤”我的结果。
结构:
在我的组件中,我有 30 个“过滤器”(选择框),并且我的“xxxx”集合中有 5000 多个文档以目录方式显示。每次用户单击提交时,我都想向 MongoDB 发送查询并将结果更新到我的目录中。这可以通过服务+订阅来完成,这很好。我的问题是创建可以使用查询的 API 端点。
我有一个 Angular 组件,它有大约 30 个选择框,其中每个值都是查询字符串的片段。
考虑以下选择框:
<select name="test" form="myform">
<option value="{'name': 'Volvo'}">Volvo</option>
<option value="{'name': 'Honda'}">Honda</option>
</select>
<select name="test2" form="myform">
<option value="{'model': 'ILX'}">ILX</option>
<option value="{'model': 'MDX'}">MDX</option>
</select>
表单提交时,要通过如下查询来表达:
/filter/test/{{'name': 'Honda'},{'model': 'ILX'}}
这是我的快速端点的(“理想”)代码(这会产生错误):
router.get('/filter/test/:query', function(req, res) {
var collection = db.get().collection('xxxxxx')
collection.find({ query }).toArray(function(err, docs) {
res.send(docs)
})
})
问题:
1.我怎样才能从这个表单中传递一个查询(或字符串)来表达? (我相信它是我提交按钮的操作标记中的 API 端点)
2. 如何正确构建这个 API 端点?
3. 这样的事情在生产中是否安全/可靠?如果没有,我该如何保护它或有什么更好的实施方式?
【问题讨论】:
标签: node.js mongodb rest angular express