如何忽略MongoDB中的查询字段
有没有办法忽略在查询中传递的字段? 此问题是由来自HTTP请求的查询引起的。
例如,这个查询将获得所有标题为user@example.com
some title
和用户的电子邮件
//From HTTP request var query = { title: 'some title', 'user.email': 'user@example.com' }; somecollection.find(query, function(err, documents) { //Not good because we know who posted these documents });
我遇到的困难是我正在开发一个API,基本上可以让你传递一个查询到MongoDB,并返回响应。 但是,敏感的部分是我不希望你通过用户的电子邮件进行查询(因为文档应该是匿名的)。 我知道您可以限制返回的字段,但是如果您可以通过user@example.com
查询所有文档,那么这些post不再是匿名的。
我想我可以尝试删除从HTTP请求传入的查询的那一部分,但是我遇到了使用$or
其他任何我不知道或忘记的操作符的问题。 或者如果他们使用string来访问用户对象的更深层的部分。
有没有办法限制查询可以查询哪些字段?
如果你不想公开所有的查询逻辑,那么不要让客户端通过查询。 创build一个单独的端点,只接受标题作为search参数。
这就是说,你可以很容易地通过做类似的东西来改造。
var title_only_query = { 'title': user_query.title }
这样只有title
属性将被查询。
- 一个调查网站,Node.js数据收集anamoly上heroku
- 为什么Meteor.users.findOne({username:“test”})返回一个对象,但用具有相同值的variablesreplace“test”会返回undefined
- 在20万条logging之后,Mongodb的回应令人难以置信
- Mongooserecursion查询父引用
- 在节点js中,mongo中的$ invariablesreplace不起作用
- Mongodb时间戳非常不准确 – mongoose
- select顶部对于每个州
- 可扩展的投票系统与MongoDB
- 如何将mongodb(使用Mongous模块)的数据传递到nodejs视图(使用temp引擎jade)?