【发布时间】:2016-06-03 05:45:13
【问题描述】:
我正在尝试使用查询字符串进行简单的猫鼬查询。 这行得通
router.get('/', function(req,res) {
myModel.find({name:"test e"}, function(err,data){
if(err) console.log(err)
res.json(data);
});
});
这不起作用(我得到了整个集合)..
router.get('/', function(req,res) {
console.log(req.query.q)
myModel.find(req.query.q, function(err,data){
if(err) console.log(err)
res.json(data);
});
});
带着这个请求
/api/myModel?q={name:"test e"}
我不认为这是一个 url 编码问题,因为我打印了 'q' var,它在服务器端看起来很好。
附带问题:如果这不是标准模式,那么查询数据库的 RESTful 标准方式是什么?
编辑以获取更多一般细节: 我不需要像 Ashley B 建议的那样通过 id 或名称进行简单访问,我需要为我的数据库提供适当的搜索引擎(用户使用图形 Web 界面必须能够单独查询每个字段,可能)
编辑 2: 感谢布莱克斯七号,我解决了我最初的问题,但如果你知道或使用更好的方法来执行复杂的查询,我很乐意讨论。 也许我应该公开另一个资源“/api/seach”?
【问题讨论】:
-
对不起,我将跳过回答猫鼬相关部分,因为我没有使用过那个数据库。但是现在有一个标准,您可以在处理基于 json 的资源时遵循 jsonapi specification
-
你的标题说明了一切。这是一个“字符串”。查询不应该是“字符串”,而是“对象”。所以
JSON.parse(req.query.q)使它成为一个对象。但是,直接从 URL 允许它可能并不是一个好主意。您的问题中还有一个错字,其中发出的查询应该是{ "name": "test e"},带有冒号:,而不是等于= -
是的,我忘记了“名称”上的引号,仅此而已,谢谢。
标签: node.js mongodb express mongoose