gpt4 book ai didi

node.js - 如何忽略 MongoDB 中的查询字段

转载 作者:太空宇宙 更新时间:2023-11-04 00:44:06 25 4
gpt4 key购买 nike

有没有办法忽略查询中传递的字段?此问题是由来自 HTTP 请求的查询引起的。

例如,此查询将获取标题为 some title 且用户电子邮件为 user@example.com 的所有文档

//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 查询所有文档,那么这些帖子就不再是匿名的。

我想我可以尝试删除从 HTTP 请求传入的查询部分,但随后我遇到了有人使用 $or 或我不知道或忘记的任何其他运算符的问题。或者,如果他们使用字符串来访问用户对象的更深部分。

有没有办法限制查询可以查询的字段?

最佳答案

如果您不想公开所有查询逻辑,则不允许客户端传入查询。创建一个单独的端点,仅接受标题作为搜索参数。

话虽如此,您可以通过执行类似的操作轻松地对其进行改造。

var title_only_query = {
'title': user_query.title
}

这样,只会查询 title 属性。

关于node.js - 如何忽略 MongoDB 中的查询字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35531320/

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