【问题标题】:NODEJS mongodb how to put variable inside like query [duplicate]NODEJS mongodb如何将变量放入查询中[重复]
【发布时间】:2019-04-08 14:06:01
【问题描述】:

我需要将变量放在 mongodb like 查询中。这是我的代码

  query={username: /req.params.data/}
  Users.find(query,function(err,users){
    if(err){
      console.log(err);

    }
    else{
      console.log(users);
    }
  });

req.params.data 是一个变量。我需要寻找包含它的用户。

【问题讨论】:

  • 那你为什么要传递正则表达式呢?
  • 我是 nodejs 的新手。我将使用 ajax 的数据传递给控制器​​。我需要找到用户。
  • 那么问题到底是什么?你看到错误了吗?意外的输出?请注意,您实际上并没有使用 req.params.data 的值;如果您不知道自己在做什么,最好不要使用像斜杠这样的随机语法。
  • 我知道,我尝试输入随机文本并且它起作用了,而不是我尝试像这样 query={username: "/"+req.params.data+"/"} 但它出于某种原因,不将其视为类似查询。
  • 您需要创建一个实际的正则表达式,而不仅仅是一个看起来像的字符串,而是使用该值。试试new RegExp(req.params.data)

标签: node.js mongodb


【解决方案1】:

req.params.data 是一个变量,将包含从前端传递的用户名。

 var userName = req.params.data; 

 User.findOne({ 'username': userName })
     .then(function(user){...})
     .catch(function(err){console.log(err)});
});

好的,如果您需要执行类似搜索,请使用RegExp

User.find(username: new RegExp(req.params.data));

或者老办法是

User.find(username: {$regex: "/^" + req.params.data + "/"});

【讨论】:

  • 好的,我明白了,但我需要像查询一样把它放进去。
  • 这并不能解决 OP 的问题;这仍然不是一个类似的查询。解释您所做的更改也很有帮助(或者只是坚持他们已经使用的回调)。
  • @bzzzzzz 更新答案
猜你喜欢
  • 1970-01-01
  • 2015-11-14
  • 2015-12-04
  • 1970-01-01
  • 2017-05-24
  • 1970-01-01
  • 2019-09-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多