MongoError $regex 必须是字符串

问题描述 投票:0回答:3

问题是,我的控制台出现错误:

{ [MongoError: $regex has to be a string]
  name: 'MongoError',
  message: '$regex has to be a string',
  waitedMS: 0,
  ok: 0,
  errmsg: '$regex has to be a string',
  code: 2 }

基本上,我使用 Ajax 从 MongoDB 中获取数据,并在其中搜索用户。没有 Ajax,我的搜索功能可以正常工作,但我想搜索用户而不需要刷新网页,只需填写我的 HTML。这是我的全部代码:

服务器代码:

app.post("/searchresult", function(req, res){
    var thename = req.body.thename;
    LoginUser.find({
        $or: [

            {"firstname": {$regex: thename, $options: 'i'}},
            {"lastname": {$regex: thename, $options: 'i'}}
        ]
    }, function(err, searchedUser){
        if(err){
            console.log(err);
            res.redirect("back");
        } else {
            res.render("searchprofile", {foundUser: searchedUser});
        }
    });
});

HTML代码:

<form class="form-inline" id="searchform" action="/searchresult" method="POST">
   <input type="text" class="form-control" placeholder="Search people" name="thename" id="searchinput">
   <button type="submit" class="btn btn-default">Submit</button>
</form>

JQuery代码:

$("#searchform").on('submit', function(e){
  e.preventDefault();

  var searchInp = $("#searchinput");

  $.ajax({
    url: '/searchresult',
    method: 'POST',
    contentType: 'application/json',
    data: JSON.stringify({ firstname: searchInp.val() }),
    success: function(response){
      console.log(response);
      searchInp.val('');
    }
  });
});
javascript html ajax node.js mongodb
3个回答
2
投票

// 名称 =

${thename}

LoginUser.find({ $或:[

    {"firstname": {$regex: `${thename}`, $options: 'i'}},
    {"lastname": {$regex: `${thename}`, $options: 'i'}}
]

},


0
投票

检查你的数据,也许< thename >不是字符串。


0
投票

这也可能是 mongoDB 内部实际类型的问题。当我尝试查询布尔值时遇到此错误, 所以我的模式是


      const schema = {
         email:string,
         active: boolean,
         role:string
      }

但我试图用 $or 查询所有这些。

     if (typeof query === 'string') {
          queryObject['$or'] = [
            { email: { $regex: `${query}`, $options: 'i' } },
            { role: { $regex: `${query}`, $options: 'i' } },
            { active: { $regex: `${query}`, $options: 'i' } },
          ]
        }

所以问题在于 active 它是一个布尔值,但是我试图用正则表达式查询它,这导致了问题。

总结:

  • 如果您使用的是 mongoose,请检查您的架构类型,或者 mongodb 中的数据类型。
  • 查询也应该是一个字符串。
© www.soinside.com 2019 - 2024. All rights reserved.