Я создал API с помощью Express в NodeJS, который использует NeDB для своей базы данных.
Я изучил документацию и вижу, что существует способ фильтрации результатов с использованием регулярных выражений для переносаout операции, похожие на «like» в SQL.
Я могу заставить работать регулярные выражения при создании жестко закодированного объекта 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()
из моего API, где я передаю JSONФильтр объекта через, я получаю ошибку, упомянутую ранее.
Фильтр из моего API добавляется следующим образом:
{ test: { '$regex': '/hell/i' } }
Похоже, что может бЕдиничные кавычки, которые вызывают некоторые проблемы, но даже после удаления их не работают.Либо я получаю ту же ошибку, либо какую-то другую ошибку синтаксического анализа JSON.
Я проверил код для NeDB и в файле model.js
добавил строку для вывода на консоль того, какое регулярное выражение было обнаружено.В обоих случаях (работающий в жестком коде метод и метод API) регулярное выражение было возвращено как:
/hell/i
Таким образом, кажется, что NeDB получает идентичное выражение для обоих вызовов, нопо какой-то причине выдает ошибку с помощью метода API.
Кто-нибудь пытался передать JSON-фильтр в экземпляр NeDB с помощью метода find()
и успешно ли он фильтровать?
Я использую Почтальондля моего тестирования API.