Поиск со специальными символами в API Mongoose, подключенном к базе данных Azure Cosmos - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь запросить результаты из Azure Cosmos db, используя Mongoose API, строки поиска, которые я передаю, имеют специальные символы, такие как #, /, =,?, &, $, _,. И т. Д.

Я пытался использовать encodeURI и encodeURIComponent для преобразования строки в специальные символы, но они все еще не поддерживали '?' поэтому я использовал регулярное выражение, чтобы избежать его, как показано ниже

query.key1 = new RegExp( encodeURI(key1).replace('?','\\?'), 'gi' );

Но не знаю, как избежать '&'.

exports.getModule = (req, res, next) => {
const { key1, key2} = req.query;

const query = {}
query.key2 = key2;

query.key1 = new RegExp( encodeURI(key1).replace('?','\\?'), 'gi' );


collection.find(query)
.exec()
.then(result => {
res.status(200).json({
data: result
});
})
.catch(err => {
console.log("Error:", err);
res.status(500).json({
"error": err
});
});

Теперь, когда я ищу key1 = "string.txt?src=ab23&id=test1", он показывает все результаты с string.txt?src=ab23 и не учитывает текст после "&"

...