Skip to content

Commit 514c7b7

Browse files
committed
Resolve matching strings that also include
1 parent 7deb9e9 commit 514c7b7

File tree

3 files changed

+5
-2
lines changed

3 files changed

+5
-2
lines changed

Readme.md

+2
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ try{
8383
// Like operator with options
8484
rsqlMongoDB('lastName=~do*=si');
8585
//=> { "lastName": { $regex: "do*", $options: "si" } }
86+
rsqlMongoDB('lastName=~"do=*"=si');
87+
//=> { "lastName": { $regex: "do=*", $options: "si" } }
8688

8789
// Exists operator
8890
rsqlMongoDB('childs=exists=true');

rsql-mongodb.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -248,8 +248,8 @@ module.exports = function (input) {
248248
mongoOperatorQuery[exp1] = { $nin: typedValues };
249249
break;
250250
case "=~":
251-
const typedExp2Arr = typedExp2.split("=");
252-
mongoOperatorQuery[exp1] = { $regex: typedExp2Arr[0], $options: typedExp2Arr[1] || "" };
251+
var expArr = exp2.split(/(=)(?=(?:[^"]|"[^"]*")*$)/g);
252+
mongoOperatorQuery[exp1] = { $regex: setType(expArr[0]), $options: expArr[2] || "" };
253253
break;
254254
case "=exists=":
255255
mongoOperatorQuery[exp1] = { $exists: typedExp2 };

test.js

+1
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ describe('rsql-mongodb', function () {
5656
expect(rsqlMongoDB('lastName=~do*')).to.deep.include({ "lastName": { $regex: "do*", $options: "" } });
5757
expect(rsqlMongoDB('lastName=~do*=i')).to.deep.include({ "lastName": { $regex: "do*", $options: "i" } });
5858
expect(rsqlMongoDB('lastName=~do*=mxs')).to.deep.include({ "lastName": { $regex: "do*", $options: "mxs" } });
59+
expect(rsqlMongoDB('lastName=~"do=*"=mxs')).to.deep.include({ "lastName": { $regex: "do=*", $options: "mxs" } });
5960
});
6061
it("Test operator Exists ('=exists=')", function () {
6162
expect(rsqlMongoDB('childs=exists=true')).to.deep.include({ "childs": { $exists: true } });

0 commit comments

Comments
 (0)