我已经在NodeJS中使用Express创建了一个API,该API正在为其数据库使用NeDB。
我检查了文档,发现可以使用正则表达式过滤结果,以执行类似于SQL中“ like”的操作。
创建硬编码的JSON对象用作过滤器时,我能够使正则表达式工作,但是当通过我的API传递过滤器时,NeDB报告以下错误:
Error: $regex operator called with non regular expression
我的测试数据库包含以下文档:
[
{
"test": "Hello",
"other": "Goodbye",
"_id": "9T0WaZ240q6ZK747"
},
{
"test": "sup!",
"other": "Ta ta",
"extra": "something",
"_id": "jLUzEZjLDVX1lmU5"
}
]
当我find()使用硬编码JSON过滤器对数据执行时,它将返回正确的结果,例如
{
test: {
$regex: /hell/i
}
}
将返回数据库中的第一条记录。
但是,当我find()从传递了JSON对象过滤器的API调用函数时,收到了前面提到的错误。
我的API中的过滤器添加如下:
{ test: { '$regex': '/hell/i' } }
看起来可能是单引号引起了一些问题,但即使将它们删除后也无法正常工作。我收到相同的错误或其他一些JSON解析错误。
我检查了NeDB的代码,并在model.js文件中添加了一行以向控制台打印它检测到的正则表达式。在这两种情况下(有效的硬编码方法和API方法),正则表达式均返回为:
/hell/i
因此看来,NeDB在两个调用中都接收到相同的表达式,但是由于某种原因,API方法引发了错误。
有没有人尝试使用该find()方法将JSON过滤器传递给NeDB实例并成功过滤?
我正在使用Postman进行API测试。
侃侃无极
相关分类