在连接到Azure Cosmos DB的Mongoose API中使用特殊字符进行搜索

时间:2019-06-12 15:52:02

标签: node.js regex express mongoose azure-cosmosdb

我正在尝试使用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的结果,而不会考虑“&”后的文本

0 个答案:

没有答案