我正在尝试使用Mongoose API从azure cosmos db查询结果,我传递的搜索字符串具有特殊字符,例如#,/,=,?,&,$,_ 、.等。
我尝试了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
的结果,而不会考虑“&”后的文本