Javascript 使用Model.find和TypeScript中的RegExp搜索mongoose。获取错误:';类型';RegExp';不可分配给类型';字符串'';

Javascript 使用Model.find和TypeScript中的RegExp搜索mongoose。获取错误:';类型';RegExp';不可分配给类型';字符串'';,javascript,node.js,typescript,mongoose,Javascript,Node.js,Typescript,Mongoose,我正在将我的express服务器转换为typescript,但遇到了一个类型错误。下面是使用mongoose的搜索功能。它接受一个RegExp,然后调用Model.find() export-const-search=async(请求:请求,响应:响应):Promise=>{ const{value}=req.query; 如果(值的类型=='string'){ const regExp=new regExp(值'i'); 试一试{ const results=await Product.fin

我正在将我的express服务器转换为typescript,但遇到了一个类型错误。下面是使用mongoose的搜索功能。它接受一个RegExp,然后调用
Model.find()

export-const-search=async(请求:请求,响应:响应):Promise=>{
const{value}=req.query;
如果(值的类型=='string'){
const regExp=new regExp(值'i');
试一试{
const results=await Product.find({$text:{$search:regExp}).exec();
//等等。
}
错误出现在
$search
上,表示
没有与此调用匹配的重载。上次重载导致以下错误。类型“RegExp”不可分配给类型“string”。


我想这意味着函数不允许regexp,但我知道它在纯js中工作得很好。

试试这个{“fieldName”:{$regex:regex,$options:'I'}。第一个参数是字段名,第二个是正则表达式,第三个是不区分大小写的match@Nonik对不起,我应该把它放在哪里?在Product.find中?是的,Product.find({“fieldName”:{$regex:regex,$options:'i'}}).exec();你解决了这个问题吗?我也遇到了同样的问题,不知道如何解决它/@auryn31 IIRC,我只是按照Nonik的建议做了,结果成功了。唯一的问题是我只能搜索1个字段(按照旧方法,我可以搜索多个字段)试试这个{“fieldName”:{$regex:regex,$options:'i'}}。第一个参数是字段名,第二个参数是正则表达式,第三个参数不区分大小写match@Nonik对不起,我应该把它放在哪里?在Product.find中?是的,Product.find({“fieldName”:{$regex:regex,$options:'I'}).exec()中;你解决了这个问题吗?我也遇到了同样的问题,无法找到解决方法/@auryn31 IIRC,我只是按照Nonik的建议做了,结果成功了。唯一的问题是我只能搜索一个字段(按照旧方法,我可以搜索多个字段)
export const search = async (req: Request, res: Response): Promise<void> => {
  const { value } = req.query;
  if (typeof value === 'string') {
    const regExp = new RegExp(value, 'i');
    try {
      const results = await Product.find({ $text: { $search: regExp } }).exec();
    // etc.
    }