Redis OM中.equals方法正常但.matches调用失败求助
Redis OM .matches方法进程退出无错误的排查思路
检查实体字段的索引类型
Redis OM的.matches()方法依赖全文搜索索引,如果你的elementName字段在实体类中定义的是普通String类型(而非开启搜索支持的类型),索引只会支持精确匹配(.equals()可用),但无法处理全文匹配查询。
示例正确定义:class Element extends Entity {} Schema(Element, { elementName: { type: 'string', searchable: true }, // 开启全文搜索支持 elementType: 'string', elementCarbonFactor: 'string', // 其他字段... });捕获未处理的Promise拒绝
进程以退出码1结束但无错误日志,大概率是存在未捕获的Promise异常。在代码开头添加全局错误监听,获取具体报错信息:process.on('unhandledRejection', (err) => { console.error('未捕获的Promise错误:', err); process.exit(1); });确认索引已正确重建
若你之前已创建过索引,修改字段的搜索属性后,需要先删除旧索引再重新创建,否则新的索引配置不会生效:// 先删除旧索引 await repository.dropIndex().catch(err => console.log('删除旧索引失败:', err)); // 再创建新索引 await repository.createIndex();检查.matches的匹配语法
Redis OM的.matches()默认遵循Redis Search的模糊匹配规则,若要匹配包含"Garlic"的内容,需添加对应通配符:// 匹配包含Garlic的任意内容 .matches("*Garlic*") // 匹配以Garlic开头的内容 .matches("Garlic*")
内容的提问来源于stack exchange,提问作者vrghost
相关产品推荐
相关产品推荐

