MongoError $regex 必须是一个字符串

Posted

技术标签:

【中文标题】MongoError $regex 必须是一个字符串【英文标题】:MongoError $regex has to be a string 【发布时间】:2017-02-10 22:17:49 【问题描述】:

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

 [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('');
    
  );
);

【问题讨论】:

console.log(thename) 显示什么? 使用 ajax:名称未定义。没有 ajax:名称有值 undefined 不是字符串,所以这是你的问题 知道为什么它返回未定义吗?我的ajax错了吗?谢谢! 好吧,您在 ajax 中发布的是 firstname 而不是 thename,所以... 【参考方案1】:

检查您的数据可能 不是字符串。

【讨论】:

【参考方案2】:

// 名称 = $thename

登录用户.find( $或:[

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

,

【讨论】:

以上是关于MongoError $regex 必须是一个字符串的主要内容,如果未能解决你的问题,请参考以下文章

MongoError:过滤器参数必须是一个对象

如何修复“MongoError:数据库名称不能包含字符'/'”

从字符串中删除美国邮政编码:R regex

MongoError: 必须使用 Mongo DB Native NodeJS Driver 对所有 $meta 排序键进行 $meta 投影

C# 使用 Regex.Split 拆分大字符串。必须保留分隔符

将 $concat 与 $project 一起使用会给出错误:'MongoError: $concat 只支持字符串,而不支持双精度'?