gpt4 book ai didi

node.js - 在查询字符串中执行 Mongoose 查询

转载 作者:可可西里 更新时间:2023-11-01 09:29:32 26 4
gpt4 key购买 nike

我正在尝试使用查询字符串进行简单的 Mongoose 查询。这行得通

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 或名称进行简单访问,我需要一个适合我的数据库的搜索引擎(用户使用图形网络界面,必须能够分别查询每个字段,可能)

编辑 2:感谢 Blakes Seven 我解决了最初的问题,但如果您知道或使用更好的方法来执行复杂查询,我很乐意讨论。 也许我应该公开另一个资源“/api/seach”?

最佳答案

我想我可以通过回答你的第二个(附带问题)来回答你的第一个问题。

假设您有一个用户模型,通常您会有一个端点来获取所有用户,如下所示:

router.get('/users', function(req, res) {
// find all users
users.find({}, function(err, data){
if(err) console.log(err)
res.json(data);
});
});

要查找特定用户,您需要一个端点,如下所示:

router.get('/users/:name', function(req, res) {
// get the user's name from the url and find that user
users.find({name: req.params.name}, function(err, data){
if(err) console.log(err)
res.json(data);
});
});

因此,与其通过查询字符串传递整个查询,不如找到使用特定部分。允许用户使用他们自己的查询直接访问您的数据会使保护变得更加困难。

关于node.js - 在查询字符串中执行 Mongoose 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35542805/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com