Expressjs:搜索查询 api

2024-01-02

我想使用查询字符串搜索我的用户存储库。

这应该返回具有相似用户名“kyogron”和相似电子邮件“kyogron@gmail”的所有用户

GET localhost:3000/users?username=kyogron&[email protected] /cdn-cgi/l/email-protection

这应该返回所有用户:

GET localhost:3000/users

我已经设法处理路由参数,但我一直在优化它:

app.get('/users', function(req, res) {
    // creates a mongoosejs query object
    var query = User.find({});

    // to understand how expressjs handles queries:
    // ?username=kyogron&[email protected] /cdn-cgi/l/email-protection
    // { username: "kyogron", email: "[email protected] /cdn-cgi/l/email-protection" }
    //console.log(req.query);

    // this was one idea of optimizing the search query parameters
    // this doesn't work don't know why I always get an array of ALL users
    // even the key and value is right
    Object.keys(req.query).forEach(function(key) {
        query.select(key, req.query[key]);
    });

    // this was the way I was first handling the parameters, this works !!
    //if (req.query.username) query.where('username', req.query.username);
    //if (req.query.email) query.where('email', req.query.email);

    // the rest of the query
    query.select('username', 'email');
    query.exec(function(err, users) {
        if (err) throw err;
        res.json(users);
    });

});

这些是我正在努力解决的问题:

  1. 为什么迭代 req.query 对象不起作用?
  2. 我怎么说 mongoose 使用通配符(例如 kyo*)

如果有人能帮助我就好了:)

Regards

EDIT:

第二个问题可以用 $where 解决:

    if (req.query.username) {
        query.$where(function() {
            return this.username === req.query.username; // here we need a regex check
        });
    }

这不起作用...有人能给我提示吗?

EDIT2:

没有用 $where 进行任何操作...但是我现在发现

query.where('username').regex();

我只需要寻找一个搜索正则表达式来查找相似的单词

EDIT3:

我找到了这个线程:如何使用“like”查询MongoDB? https://stackoverflow.com/questions/3305561/how-to-query-mongodb-with-like我在 mongoosejs 组中询问如何使用 mongoose 做到这一点

EDIT4:

if (req.query.username) {
            query.where('username').regex(new RegExp("\/"+req.query.username+"\/"));
}

我差一点就明白了。只需修复这个愚蠢的正则表达式......


app.get('/users', function(req, res) {
    var query = User.find({});

    Object.keys(req.query).forEach(function(key) {
        query.where(key).regex(new RegExp(req.query[key]));
    });

    /*
    if (req.query.username) {
        query.where('username').regex(new RegExp(req.query.username));
    }
    if (req.query.email) {
        query.where('email').regex(new RegExp(req.query.email));
    }*/

    query.select('username', 'email');
    query.exec(function(err, users) {
        if (err) throw err;
        res.json(users);
    });

});

第一个不起作用,因为我有一个拼写错误(.select() 而不是 .where())。第二个是在额外的线程中找到的

我对所选择的方法仍然有点不确定。

迭代 req.query 将使代码可重用(可能作为路由参数函数的前提条件),但它很容易出错

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Expressjs:搜索查询 api 的相关文章

  • 如何阻止直接访问我的 JavaScript 文件?

    我使用 Minify 来缩小并缓存所有脚本请求 我只希望我的用户能够访问 JavaScript 文件的缩小版本 缩小位于www example com min我的脚本位于www example com scripts 如何阻止直接访问doc
  • Firebase,只得到新的孩子[重复]

    这个问题在这里已经有答案了 var firebase new Firebase firebaseRef on child added function snapshot 这将接收所有元素 有没有办法在创建新的 Firebase 引用时不接收
  • 如何在没有 jQuery 的情况下删除 Javascript 中的元素

    我试图通过以下方式从 DOM 中删除 Div a 标签嵌套在其中 我想我正在寻找的是 jQuery 的纯 Javascript 版本 div remove 这是html设置 div a href Click me to remove the
  • 如何在React Native Android中获取响应头?

    您好 我想在获取 POST 请求后获取响应标头 我尝试调试看看里面有什么response with console log response 我可以从以下位置获取响应机构responseData但我不知道如何获取标题 我想同时获得标题和正文
  • IntersectionObserver是否支持水平滚动观察?

    我制作了几个垂直滚动 IntersectionObserver 模块 但我对水平滚动感兴趣 根将是 div 观察目标将是 img 我想观察当 img 放大但 div 保持视口宽度时的变化 我什至不确定移动 Safari 是否会将缩放后的图片
  • 按下回车键时不刷新页面

    我遇到了一些问题 只要表单中有输入 回车键就会触发页面刷新 下面的代码 如果按下回车并且文本区域 input 中没有输入任何文本 则不会刷新页面 但是如果按下回车并且 input中有输入或者光标位于文本区域 我不确定是什么触发了它 因为 s
  • React autoFocus 将光标设置为输入值的开头

    我有一个受控输入 最初显示一个值 我已将该输入设置为自动聚焦 但当我希望它出现在末尾时 光标出现在输入的开头 我知道这可能是因为自动对焦是在值之前添加的 但我不能 100 确定 在输入字段末尾完成光标初始化的最佳方法是什么 var Test
  • JavaScript 中的 Promise 有什么意义?

    一个承诺是一个 可能现在可用 或将来可用 或永远不可用的值 来源 MDN 假设我有一个想要处理图片的应用程序 图片已加载 例如在算法在后台使用它之后 或某种其他类型的延迟 现在我想检查一下图片是否可以在future 通过使用承诺 而不是回调
  • 计算三次贝塞尔曲线的弧长、曲线长度。为什么不工作?

    我正在用这个算法计算弧长 三次贝塞尔曲线的长度 function getArcLength path var STEPS 1000 gt precision var t 1 STEPS var aX 0 var aY 0 var bX 0
  • 如何使用 Javascript 设置查询字符串

    有没有办法使用 javascript 设置查询字符串的值 我的页面有一个过滤器列表 单击该列表时 它将更改右侧的页内结果窗格 我正在尝试更新 url 的查询字符串值 因此如果用户离开页面 然后单击 后退 按钮 他们将返回到最后一个过滤器选择
  • 如何在另一个自定义 Hook 中使用返回值的自定义 Hook?

    我正在使用 React native 其中有一个名为的自定义 HookuseUser使用以下方法从 AWS Amplify 获取用户信息Auth getUserInfro方法 然后获取返回对象的一部分并用它设置一个状态变量 我还有另一个名为
  • mongodb 聚合 - 累积字段的不同组值

    如果我有Player表格文件 name String score Int 我有Group文档 其中组代表玩家列表 groupName String players ObjectID 玩家可以属于多个组 我想做一个聚合Player文档 按以下
  • 使用 JavaScript 移动页面上的按钮

    我的按钮可以移动 但奇怪的是 我无法弄清楚偏移是否有问题 我希望我的按钮随着鼠标光标移动 但现在它的移动方式不是我想要的 有时它会消失 另外 创建的新按钮是重叠的 我不知道如何解决这个问题并拥有更好的外观 var coorA var coo
  • 如何使用 JavaScript 或 jQuery 克隆 HTML 元素的样式对象?

    我正在尝试克隆元素的样式对象 这应该允许我在更改后重置所述元素的样式 例如 el style left 50px curr style left 50px Modify the elements style The cloned style
  • 使用 Jade 评估自定义 javascript 方法 (CircularJSON)

    我想通过 Jade 将一个对象解析为客户端 JavaScript 通常这会起作用 script var object JSON parse JSON stringify object but my object is circular ht
  • 主页(网格)上的缩略图现在显得模糊。如何纠正?

    我不知道这看起来是否愚蠢 但从早上开始我就无法纠正这个突然出现在我的博客网站上的错误www candidopinions in http www candidopinions in 我有一个网格视图模板 其中博客文章中的特色图像作为调整大小
  • 滚动顶部不符合预期

    Note 由于上次忘记奖励而重新开放赏金 A Woff 大师已经给出答案 我想在用户展开某一行时到达该行 这样当最后一个可见行展开时 用户不必向下滚动即可查看内容 I used example tbody on click td green
  • Flot 库将 y 轴设置为最小值 0 和最大值 24

    如何将 y 轴设置在 0 到 24 的范围内 这是我的代码 j plot j placeholder d1 xaxis mode time min new Date 2010 11 01 getTime max new Date 2011
  • 如何从 json 文件创建模型? (ExtJS)

    这是我想使用 json 文件创建的模型 Ext define Users extend Ext data Model fields name user id type int name user name type string 为了根据服
  • 如何通过索引访问 JSON 对象中的字段

    我知道这不是最好的方法 但我别无选择 我必须通过索引访问 JSONObject 中的项目 访问对象的标准方法是只写this objectName or this objectName 我还找到了一种获取 json 对象内所有字段的方法 fo

随机推荐

  • 如何在 Go 中使用 RSA 密钥加密和解密纯文本?

    我正在尝试编写一个实用程序 使用 RSA 密钥对加密和解密纯文本文件 RSA 密钥是使用 ssh keygen 生成的 并像往常一样存储在 ssh 中 我无法理解如何使用 Go 语言 crypto 和 crypto rsa 包来做到这一点
  • MySQL 缓存和日期函数

    我曾经在性能博客中读到 最好使用 PHP 的日期函数在 MySQL 查询中设置日期 而不是使用像 curdate 这样的 mysql 日期函数 因为 mysql 可以缓存查询或结果或类似的东西 有人对此有任何见解吗 它有水分还是毫无根据 e
  • R-plotly-结合气泡和等值线图

    我想以情节方式将两种类型的地图组合在一张地图中 即气泡图和分区统计图 目标是通过将鼠标悬停在地图上来显示国家级别 分区统计图 以及城市级别 气泡 的人口规模 分区统计图的绘图示例代码如下 library plotly df lt read
  • 'Room' 类是抽象的;无法实例化

    我有一个抽象类Room它有子类Family and Standard 我创造了room new ArrayList
  • 2 Kubernetes pod 在不知道暴露地址的情况下进行通信

    我计划部署 2 个带有 NodePort 服务的 kubernetes pod 将它们暴露到网络中 现在我希望 pod 1 能够通过他的服务访问 pod 2 问题是我编写部署文件 但我不知道 pod 2 将从集群获取的 IP 地址 但我需要
  • WPF:使用虚拟键盘

    我创建了一个虚拟键盘用户控件 可以在应用程序中跨多个窗口使用 我想知道当按下某个键时如何将其输入到窗口中的文本框中 我正在寻找的是这样的 private void keyboardKey Click object sender Routed
  • Angular2 - 将文本框聚焦于组件加载

    我正在 Angular2 Beta 8 中开发一个组件 该组件有一个文本框和一个下拉列表 我想在组件加载或下拉列表更改事件后立即将焦点设置在文本框中 我如何在 Angular2 中实现这一点 以下是该组件的 Html div div
  • TypeError:使用 tf.map_fn 和 keras 功能模型时无法为

    当我尝试在 keras 功能模型的定义中使用 tf map fn 时 出现错误 TypeError Could not build a TypeSpec for
  • 如何使用 AngularJS 在过滤速度慢时显示某些内容

    在 Angular 中 我有一个表格和一个搜索框 用户可以在其中键入内容 Angular 将在数据中搜索并显示表格 问题是我有足够的数据 过滤可能会减慢 在这种情况下 我想显示一个微调器 类似于我的 html 的示例 Search
  • Delphi 同步滚动组件

    我正在尝试同步 VCL Forms 应用程序中两个 TDBGrid 组件的滚动 但在没有堆栈问题的情况下拦截每个网格组件的 WndProc 时遇到困难 我尝试在滚动事件下发送 WM VSCROLL 消息 但这仍然导致错误的操作 它需要用于单
  • 如何禁用 UIPickerView (Swift)?

    我想禁用 UIPickerView 但将其设置为 isEnabled false 不起作用 不 我不想在使用视图时禁用它 而是无法滚动视图 直到完成某个操作才能重新启用它 我在这里尝试的代码不起作用 它甚至可能不是快速代码 如何禁用 UIP
  • 尝试理解 Ember JS 的承诺

    我一直在尝试编写一个代码示例来理解承诺 但我似乎无法弄清楚如何处理回调并稍后获取 thenable 值 以下是我正在研究的两个相关 JSBin 示例 以冗长的风格编写 以模仿烘焙饼干 没有异步的 Ember JS http jsbin co
  • 如何使用 jQuery 默认预加载所有选项卡

    如果我有 4 个选项卡 其中前 2 个使用 ajax 加载 后 2 个是静态的 那么默认情况下如何预加载 2 个 ajax 选项卡 目前 只有第一个选项卡会自动加载 第二个选项卡会在单击时加载 我希望它们都被加载 这样当我单击第二个时 内容
  • 如何在客户端生成JSON

    在项目中 我必须将复杂的 JSON 命令从服务器发送到客户端 生成 JSONObjects 字符串 数字等 将它们转换为字符串然后通过 RequestBuilder 发送它们是否有效 或者是否有更有效的方法 将 JSON 对象转换为字符串是
  • 监听多个事件

    如何在事件驱动架构中处理相关事件 具体来说 如果必须触发多个事件才能执行某些操作怎么办 例如 我有一个监听两个事件的微服务foo and bar并且仅当两个事件到达并且具有相同的相关 ID 时才执行操作 一种方法是在微服务内部保留一个内部数
  • 如何使用 PHP/HTML 保持空白格式?

    我正在解析文件中的文本并将其存储在字符串中 问题是原始文件中的某些文本包含ASCII art以及我想保留的东西 当我打印出字符串HTML page 即使它确实具有相同的格式和所有内容 因为它是HTML 不保留间距和换行符 打印文本的最佳方式
  • 在反应路由器中刷新时出现空白页面

    当我从 home 导航到 dashboard 时 路由器工作正常 但是当我从 home 导航到 profile id 时 路由器将我导航到也工作正常的配置文件页面 但是当我刷新它时 它会变成空白页面并且没有给我任何 404 或重定向回主页
  • Zend 表单编辑和 Zend_Validate_Db_NoRecordExists

    我正在通过构建一些供我自己使用的实用程序网站来慢慢增强我的 Zend 技能 我一直在使用 Zend Forms 和表单验证 到目前为止 我很高兴我已经了解了 Zend 的做事方式 然而 我对如何在编辑表单和映射到必须唯一的数据库列的字段的上
  • Cocoapods ld:找不到 -lPods-Projectname 的库

    我已经通过它安装了 cocoa pods 库和一些框架 现在 当我编译项目时 构建失败 错误 ld 找不到 lPods Project 的库 clang 错误 链接器命令失败 退出代码为 1 使用 v 查看调用 这里是部分文字 Ld Use
  • Expressjs:搜索查询 api

    我想使用查询字符串搜索我的用户存储库 这应该返回具有相似用户名 kyogron 和相似电子邮件 kyogron gmail 的所有用户 GET localhost 3000 users username kyogron email prot