Commit 58b47ee85b69d585fd7c427b94a52c61523ef1fc
1 parent
33ead877
Exists in
master
and in
1 other branch
update query mongodb
Showing
6 changed files
with
405 additions
and
5 deletions
Show diff stats
app.js
controllers/mongo-db/mongoConnect.js
controllers/mongo-db/query.js
1 | 1 | let express = require('express'); |
2 | 2 | let router = express.Router(); |
3 | 3 | let connection = require("./mongoConnect.js") |
4 | - | |
4 | +var parseFilter = require('ldapjs').parseFilter; | |
5 | +let utils = require('../../utils/utils') | |
5 | 6 | |
6 | 7 | router.get('/',async function (req, res) { |
7 | - var query = Object.assign(req.params, req.query); | |
8 | - var result = await connection.reqMongo(req, query) | |
9 | - res.status(200).json(result); | |
8 | + | |
9 | + var filter = parseFilter(req.query.filter) | |
10 | + | |
11 | + // var objectData = Object.assign(req.query,req.params); | |
12 | + // var filter = utils.getUpdateFilter(objectData); | |
13 | + | |
14 | + var query = await utils.getQuery(filter); | |
15 | + console.log(query) | |
16 | + | |
17 | + // var query = Object.assign(req.params, req.query); | |
18 | + var result = await connection.reqMongo(req, query, 'config') | |
19 | + res.status(200).send(result); | |
10 | 20 | }); |
11 | 21 | |
12 | 22 | router.post('/', (req, res) => { | ... | ... |
package-lock.json
... | ... | @@ -88,6 +88,20 @@ |
88 | 88 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", |
89 | 89 | "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" |
90 | 90 | }, |
91 | + "backoff": { | |
92 | + "version": "2.5.0", | |
93 | + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", | |
94 | + "integrity": "sha1-9hbtqdPktmuMp/ynn2lXIsX44m8=", | |
95 | + "requires": { | |
96 | + "precond": "0.2.3" | |
97 | + } | |
98 | + }, | |
99 | + "balanced-match": { | |
100 | + "version": "1.0.0", | |
101 | + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", | |
102 | + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", | |
103 | + "optional": true | |
104 | + }, | |
91 | 105 | "bcrypt-pbkdf": { |
92 | 106 | "version": "1.0.2", |
93 | 107 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", |
... | ... | @@ -154,11 +168,32 @@ |
154 | 168 | "hoek": "2.16.3" |
155 | 169 | } |
156 | 170 | }, |
171 | + "brace-expansion": { | |
172 | + "version": "1.1.11", | |
173 | + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", | |
174 | + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", | |
175 | + "optional": true, | |
176 | + "requires": { | |
177 | + "balanced-match": "1.0.0", | |
178 | + "concat-map": "0.0.1" | |
179 | + } | |
180 | + }, | |
157 | 181 | "bson": { |
158 | 182 | "version": "1.1.0", |
159 | 183 | "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.0.tgz", |
160 | 184 | "integrity": "sha512-9Aeai9TacfNtWXOYarkFJRW2CWo+dRon+fuLZYJmvLV3+MiUp0bEI6IAZfXEIg7/Pl/7IWlLaDnhzTsD81etQA==" |
161 | 185 | }, |
186 | + "bunyan": { | |
187 | + "version": "1.8.12", | |
188 | + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", | |
189 | + "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", | |
190 | + "requires": { | |
191 | + "dtrace-provider": "0.8.7", | |
192 | + "moment": "2.22.2", | |
193 | + "mv": "2.1.1", | |
194 | + "safe-json-stringify": "1.2.0" | |
195 | + } | |
196 | + }, | |
162 | 197 | "bytes": { |
163 | 198 | "version": "3.0.0", |
164 | 199 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", |
... | ... | @@ -281,6 +316,12 @@ |
281 | 316 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", |
282 | 317 | "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" |
283 | 318 | }, |
319 | + "concat-map": { | |
320 | + "version": "0.0.1", | |
321 | + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | |
322 | + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", | |
323 | + "optional": true | |
324 | + }, | |
284 | 325 | "connect-flash": { |
285 | 326 | "version": "0.1.1", |
286 | 327 | "resolved": "https://registry.npmjs.org/connect-flash/-/connect-flash-0.1.1.tgz", |
... | ... | @@ -435,6 +476,15 @@ |
435 | 476 | "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", |
436 | 477 | "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw=" |
437 | 478 | }, |
479 | + "dtrace-provider": { | |
480 | + "version": "0.8.7", | |
481 | + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.7.tgz", | |
482 | + "integrity": "sha1-3JObTT4GIM/gwc2APQ0tftBP/QQ=", | |
483 | + "optional": true, | |
484 | + "requires": { | |
485 | + "nan": "2.11.1" | |
486 | + } | |
487 | + }, | |
438 | 488 | "ecc-jsbn": { |
439 | 489 | "version": "0.1.2", |
440 | 490 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", |
... | ... | @@ -689,6 +739,19 @@ |
689 | 739 | } |
690 | 740 | } |
691 | 741 | }, |
742 | + "glob": { | |
743 | + "version": "6.0.4", | |
744 | + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", | |
745 | + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", | |
746 | + "optional": true, | |
747 | + "requires": { | |
748 | + "inflight": "1.0.6", | |
749 | + "inherits": "2.0.3", | |
750 | + "minimatch": "3.0.4", | |
751 | + "once": "1.4.0", | |
752 | + "path-is-absolute": "1.0.1" | |
753 | + } | |
754 | + }, | |
692 | 755 | "har-validator": { |
693 | 756 | "version": "2.0.6", |
694 | 757 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", |
... | ... | @@ -777,6 +840,16 @@ |
777 | 840 | "pope": "1.0.5" |
778 | 841 | } |
779 | 842 | }, |
843 | + "inflight": { | |
844 | + "version": "1.0.6", | |
845 | + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", | |
846 | + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", | |
847 | + "optional": true, | |
848 | + "requires": { | |
849 | + "once": "1.4.0", | |
850 | + "wrappy": "1.0.2" | |
851 | + } | |
852 | + }, | |
780 | 853 | "inherits": { |
781 | 854 | "version": "2.0.3", |
782 | 855 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", |
... | ... | @@ -898,6 +971,50 @@ |
898 | 971 | "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", |
899 | 972 | "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" |
900 | 973 | }, |
974 | + "ldap-filter": { | |
975 | + "version": "0.2.2", | |
976 | + "resolved": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz", | |
977 | + "integrity": "sha1-8rhCvguG2jNSeYUFsx68rlkNd9A=", | |
978 | + "requires": { | |
979 | + "assert-plus": "0.1.5" | |
980 | + }, | |
981 | + "dependencies": { | |
982 | + "assert-plus": { | |
983 | + "version": "0.1.5", | |
984 | + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", | |
985 | + "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=" | |
986 | + } | |
987 | + } | |
988 | + }, | |
989 | + "ldapjs": { | |
990 | + "version": "1.0.2", | |
991 | + "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.2.tgz", | |
992 | + "integrity": "sha1-VE/3Ayt7g8aPBwEyjZKXqmlDQPk=", | |
993 | + "requires": { | |
994 | + "asn1": "0.2.3", | |
995 | + "assert-plus": "1.0.0", | |
996 | + "backoff": "2.5.0", | |
997 | + "bunyan": "1.8.12", | |
998 | + "dashdash": "1.14.1", | |
999 | + "dtrace-provider": "0.8.7", | |
1000 | + "ldap-filter": "0.2.2", | |
1001 | + "once": "1.4.0", | |
1002 | + "vasync": "1.6.4", | |
1003 | + "verror": "1.10.0" | |
1004 | + }, | |
1005 | + "dependencies": { | |
1006 | + "asn1": { | |
1007 | + "version": "0.2.3", | |
1008 | + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", | |
1009 | + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" | |
1010 | + }, | |
1011 | + "assert-plus": { | |
1012 | + "version": "1.0.0", | |
1013 | + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", | |
1014 | + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" | |
1015 | + } | |
1016 | + } | |
1017 | + }, | |
901 | 1018 | "lodash": { |
902 | 1019 | "version": "4.17.11", |
903 | 1020 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", |
... | ... | @@ -998,6 +1115,15 @@ |
998 | 1115 | "mime-db": "1.36.0" |
999 | 1116 | } |
1000 | 1117 | }, |
1118 | + "minimatch": { | |
1119 | + "version": "3.0.4", | |
1120 | + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", | |
1121 | + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", | |
1122 | + "optional": true, | |
1123 | + "requires": { | |
1124 | + "brace-expansion": "1.1.11" | |
1125 | + } | |
1126 | + }, | |
1001 | 1127 | "minimist": { |
1002 | 1128 | "version": "0.0.8", |
1003 | 1129 | "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", |
... | ... | @@ -1041,6 +1167,29 @@ |
1041 | 1167 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", |
1042 | 1168 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" |
1043 | 1169 | }, |
1170 | + "mv": { | |
1171 | + "version": "2.1.1", | |
1172 | + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", | |
1173 | + "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", | |
1174 | + "optional": true, | |
1175 | + "requires": { | |
1176 | + "mkdirp": "0.5.1", | |
1177 | + "ncp": "2.0.0", | |
1178 | + "rimraf": "2.4.5" | |
1179 | + } | |
1180 | + }, | |
1181 | + "nan": { | |
1182 | + "version": "2.11.1", | |
1183 | + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", | |
1184 | + "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", | |
1185 | + "optional": true | |
1186 | + }, | |
1187 | + "ncp": { | |
1188 | + "version": "2.0.0", | |
1189 | + "resolved": "http://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", | |
1190 | + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", | |
1191 | + "optional": true | |
1192 | + }, | |
1044 | 1193 | "negotiator": { |
1045 | 1194 | "version": "0.6.1", |
1046 | 1195 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", |
... | ... | @@ -1074,6 +1223,14 @@ |
1074 | 1223 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", |
1075 | 1224 | "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" |
1076 | 1225 | }, |
1226 | + "once": { | |
1227 | + "version": "1.4.0", | |
1228 | + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", | |
1229 | + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", | |
1230 | + "requires": { | |
1231 | + "wrappy": "1.0.2" | |
1232 | + } | |
1233 | + }, | |
1077 | 1234 | "one-time": { |
1078 | 1235 | "version": "0.0.4", |
1079 | 1236 | "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", |
... | ... | @@ -1166,6 +1323,12 @@ |
1166 | 1323 | "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", |
1167 | 1324 | "integrity": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ=" |
1168 | 1325 | }, |
1326 | + "path-is-absolute": { | |
1327 | + "version": "1.0.1", | |
1328 | + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", | |
1329 | + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", | |
1330 | + "optional": true | |
1331 | + }, | |
1169 | 1332 | "path-to-regexp": { |
1170 | 1333 | "version": "0.1.7", |
1171 | 1334 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", |
... | ... | @@ -1199,6 +1362,11 @@ |
1199 | 1362 | "resolved": "https://registry.npmjs.org/pope/-/pope-1.0.5.tgz", |
1200 | 1363 | "integrity": "sha512-53FgeyiX79LOvZvviqFSLFT3otSRIpPv4uTDRscoWaJlr1LWCaTB+ouhvCouj08Ag28pM18FZv9Y2+wmimILAA==" |
1201 | 1364 | }, |
1365 | + "precond": { | |
1366 | + "version": "0.2.3", | |
1367 | + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", | |
1368 | + "integrity": "sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw=" | |
1369 | + }, | |
1202 | 1370 | "process-nextick-args": { |
1203 | 1371 | "version": "2.0.0", |
1204 | 1372 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", |
... | ... | @@ -1378,11 +1546,26 @@ |
1378 | 1546 | "align-text": "0.1.4" |
1379 | 1547 | } |
1380 | 1548 | }, |
1549 | + "rimraf": { | |
1550 | + "version": "2.4.5", | |
1551 | + "resolved": "http://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", | |
1552 | + "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", | |
1553 | + "optional": true, | |
1554 | + "requires": { | |
1555 | + "glob": "6.0.4" | |
1556 | + } | |
1557 | + }, | |
1381 | 1558 | "safe-buffer": { |
1382 | 1559 | "version": "5.1.2", |
1383 | 1560 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", |
1384 | 1561 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" |
1385 | 1562 | }, |
1563 | + "safe-json-stringify": { | |
1564 | + "version": "1.2.0", | |
1565 | + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", | |
1566 | + "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", | |
1567 | + "optional": true | |
1568 | + }, | |
1386 | 1569 | "safer-buffer": { |
1387 | 1570 | "version": "2.1.2", |
1388 | 1571 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", |
... | ... | @@ -1661,6 +1844,29 @@ |
1661 | 1844 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", |
1662 | 1845 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" |
1663 | 1846 | }, |
1847 | + "vasync": { | |
1848 | + "version": "1.6.4", | |
1849 | + "resolved": "https://registry.npmjs.org/vasync/-/vasync-1.6.4.tgz", | |
1850 | + "integrity": "sha1-3+k2Fq0OeugBszKp2Iv8XNyOHR8=", | |
1851 | + "requires": { | |
1852 | + "verror": "1.6.0" | |
1853 | + }, | |
1854 | + "dependencies": { | |
1855 | + "extsprintf": { | |
1856 | + "version": "1.2.0", | |
1857 | + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz", | |
1858 | + "integrity": "sha1-WtlGwi9bMrp/jNdCZxHG6KP8JSk=" | |
1859 | + }, | |
1860 | + "verror": { | |
1861 | + "version": "1.6.0", | |
1862 | + "resolved": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", | |
1863 | + "integrity": "sha1-fROyex+swuLakEBetepuW90lLqU=", | |
1864 | + "requires": { | |
1865 | + "extsprintf": "1.2.0" | |
1866 | + } | |
1867 | + } | |
1868 | + } | |
1869 | + }, | |
1664 | 1870 | "verror": { |
1665 | 1871 | "version": "1.10.0", |
1666 | 1872 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", |
... | ... | @@ -1721,6 +1927,11 @@ |
1721 | 1927 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", |
1722 | 1928 | "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" |
1723 | 1929 | }, |
1930 | + "wrappy": { | |
1931 | + "version": "1.0.2", | |
1932 | + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", | |
1933 | + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" | |
1934 | + }, | |
1724 | 1935 | "xml-crypto": { |
1725 | 1936 | "version": "0.10.1", |
1726 | 1937 | "resolved": "https://registry.npmjs.org/xml-crypto/-/xml-crypto-0.10.1.tgz", | ... | ... |
package.json
... | ... | @@ -0,0 +1,174 @@ |
1 | + | |
2 | + | |
3 | +utils = {}; | |
4 | + | |
5 | + | |
6 | +utils.findQueryString = function(req) | |
7 | +{ | |
8 | + var keywords = ["filter","offset","orderby","limit","fields"]; | |
9 | + | |
10 | + var baseUrl = decodeURIComponent(req.url); | |
11 | + | |
12 | + if(baseUrl && baseUrl.indexOf("filter=(") != -1) | |
13 | + { | |
14 | + baseUrl = "&"+baseUrl.split("?")[1]; | |
15 | + | |
16 | + var indexList = []; | |
17 | + var listData = {}; | |
18 | + for(var i=0;i<keywords.length;i++) | |
19 | + { | |
20 | + var foundIndex = baseUrl.indexOf("&"+keywords[i]+"="); | |
21 | + if(foundIndex != -1) | |
22 | + { | |
23 | + listData[foundIndex] = keywords[i]; | |
24 | + indexList.push(foundIndex); | |
25 | + } | |
26 | + | |
27 | + } | |
28 | + indexList.sort(function(a, b){return a - b}) | |
29 | + | |
30 | + for(var i = 0;i<keywords.length;i++) | |
31 | + { | |
32 | + baseUrl = baseUrl.replace("&"+keywords[i]+"=","[split]") | |
33 | + } | |
34 | + var splitUrl = baseUrl.split("[split]"); | |
35 | + | |
36 | + req.query = {}; | |
37 | + for(var i=0;i<indexList.length;i++) | |
38 | + req.query[listData[indexList[i]]] = splitUrl[i+1]; | |
39 | + | |
40 | + } | |
41 | + return req; | |
42 | +} | |
43 | + | |
44 | +utils.getUpdateFilter = function(obj) | |
45 | +{ | |
46 | + | |
47 | + if(obj.filter) | |
48 | + { | |
49 | + | |
50 | + var filter = findValueInBracket(obj.filter); | |
51 | + obj = Object.assign(obj, filter); | |
52 | + | |
53 | + delete obj.filter; | |
54 | + } | |
55 | + | |
56 | + | |
57 | + return obj; | |
58 | +} | |
59 | + | |
60 | +utils.getQuery = async function(data,query){ | |
61 | + if(!query) | |
62 | + var query = {}; | |
63 | + //type !(xx) connot be use | |
64 | + var temFilter = data.filters; | |
65 | + for(var i = 0; i < temFilter.length; i++){ | |
66 | + // console.log(temFilter[i].filters) | |
67 | + if(temFilter[i].filters){ | |
68 | + query = getQuery(temFilter[i],query); | |
69 | + } else { | |
70 | + var operate = ""; | |
71 | + switch(temFilter[i].type){ | |
72 | + case 'equal': operate = '$eq'; break; | |
73 | + case 'ge': operate = '$gte'; break;//>= | |
74 | + case 'le': operate = '$lte'; break;//<= | |
75 | + case 'approx' : operate = '$in'; break; | |
76 | + default : operate = "$"+temFilter[i].type; break; | |
77 | + } | |
78 | + | |
79 | + switch(operate){ | |
80 | + case '$present' : | |
81 | + break; | |
82 | + case '$substring' : | |
83 | + // if(temFilter[i].initial){ | |
84 | + // query += temFilter[i].attribute +" LIKE '"+ temFilter[i].initial + "%'" | |
85 | + // } else if(temFilter[i].final){ | |
86 | + // query += temFilter[i].attribute +" LIKE '%" + temFilter[i].final + "'" | |
87 | + // } else { | |
88 | + // var any = "%"; | |
89 | + // for(var j = 0; j < temFilter[i].any.length; j++){ | |
90 | + // any += temFilter[i].any[j]+"%"; | |
91 | + // } | |
92 | + // query += temFilter[i].attribute +" LIKE '" + any + "'" | |
93 | + // } | |
94 | + break; | |
95 | + default : | |
96 | + // query += temFilter[i].attribute +" "+ operate +" "+ temFilter[i].value; | |
97 | + var regexValue = new RegExp(temFilter[i].value,"g") | |
98 | + if(data.type == 'or'){ | |
99 | + var objOr = {} | |
100 | + var attribute = temFilter[i].attribute; | |
101 | + objOr[attribute] = regexValue | |
102 | + if(!query['$or']) | |
103 | + query['$or'] = [] | |
104 | + query['$or'].push(objOr) | |
105 | + } else { | |
106 | + var attribute = temFilter[i].attribute; | |
107 | + query[attribute] = regexValue | |
108 | + } | |
109 | + // query = Object.assign(obj, obj) | |
110 | + break; | |
111 | + } | |
112 | + // query += temFilter[i].attribute +" "+ operate +" "+ temFilter[i].value; | |
113 | + } | |
114 | + // if(i != temFilter.length-1) | |
115 | + // query += " "+data.type.toUpperCase()+" " | |
116 | + } | |
117 | + return query; | |
118 | +} | |
119 | + | |
120 | +function findValueInBracket(data) | |
121 | +{ | |
122 | + data = data.substring(1,data.length-1); | |
123 | + var returnData = {}; | |
124 | + | |
125 | + | |
126 | + if(data.indexOf("&") == -1 && data.indexOf("|") == -1) | |
127 | + { | |
128 | + //single data | |
129 | + var t = data.split("="); | |
130 | + returnData[t[0]] = t[1]; | |
131 | + | |
132 | + }else | |
133 | + { | |
134 | + //multi data | |
135 | + var left = []; | |
136 | + var splitData = data.split(""); | |
137 | + for(var i=0;i<splitData.length;i++) | |
138 | + { | |
139 | + if(splitData[i] === "(") | |
140 | + { | |
141 | + left.push(i); | |
142 | + } | |
143 | + else if(splitData[i] === ")") | |
144 | + { | |
145 | + var pop = left.pop(); | |
146 | + var rawdata = data.substring(pop+1,i); | |
147 | + if(rawdata.indexOf("&") == -1 && rawdata.indexOf("|") == -1) | |
148 | + { | |
149 | + var t = rawdata.split("="); | |
150 | + | |
151 | + if(!returnData[t[0]]) | |
152 | + returnData[t[0]] = []; | |
153 | + | |
154 | + returnData[t[0]].push(t[1]); | |
155 | + } | |
156 | + | |
157 | + | |
158 | + } | |
159 | + } | |
160 | + | |
161 | + var keylist = Object.keys(returnData) | |
162 | + for(var i=0;i<keylist.length;i++) | |
163 | + { | |
164 | + | |
165 | + if(returnData[keylist[i]].length == 1) | |
166 | + returnData[keylist[i]] = returnData[keylist[i]][0]; | |
167 | + } | |
168 | + } | |
169 | + | |
170 | + return returnData; | |
171 | + | |
172 | +} | |
173 | + | |
174 | +module.exports = utils; | |
0 | 175 | \ No newline at end of file | ... | ... |