Я пытаюсь запросить результаты из 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
и не учитывает текст после "&"