Cache: Fix queries with regex

pull/4275/head
Rodrigo Nascimento 10 years ago
parent 77d5cc685a
commit f877dbd29e
No known key found for this signature in database
GPG Key ID: 2C85B3AFE75D23F9
  1. 28
      packages/rocketchat-lib/server/startup/cache/_Base.js

@ -516,7 +516,33 @@ RocketChat.cache._Base = (class CacheBase extends EventEmitter {
return result;
}
processQuery(query) {
if (!query) {
return query;
}
for (const field in query) {
if (query.hasOwnProperty(field)) {
const value = query[field];
if (value instanceof RegExp) {
query[field] = {
$regex: value
};
}
if (field === '$and' || field === '$or') {
query[field] = value.map((subValue) => {
return this.processQuery(subValue);
});
}
}
}
return query;
}
find(query, options={}) {
query = this.processQuery(query);
return {
fetch: () => {
return this.processQueryOptionsOnResult(this.collection.find(query), options);
@ -533,10 +559,12 @@ RocketChat.cache._Base = (class CacheBase extends EventEmitter {
}
findOne(query, options) {
query = this.processQuery(query);
return this.processQueryOptionsOnResult(this.collection.findOne(query), options);
}
findWhere(query, options) {
query = this.processQuery(query);
return this.processQueryOptionsOnResult(this.collection.findWhere(query), options);
}

Loading…
Cancel
Save