Skip to content

Commit e8140ca

Browse files
Release(2.0.1): add support for _source filter (#133)
* task(Readme): readme file update * fix(eslint): all lint issues, remove unused files * fix(eslint): constructor, prototype issues for ESConnector class * fix(lint): lint issues fixed in all.js and buildOrder.js * feature(Client): all client APIs updated * fix(replaceOrCreate): response fix * task(README, examples): update README and example server * Release: Version 2.0.0 * task(filter): added _source filter support for fields * release(2.0.1): version update
1 parent 477d311 commit e8140ca

File tree

2 files changed

+10
-30
lines changed

2 files changed

+10
-30
lines changed

lib/buildFilter.js

Lines changed: 9 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -32,42 +32,22 @@ function buildFilter(modelName, idName, criteria = {}, size = null, offset = nul
3232
filter.from = criteria.offset;
3333
}
3434
if (criteria.fields) {
35-
// { fields: {propertyName: <true|false>, propertyName: <true|false>, ... } }
36-
// filter.body.fields = self.buildOrder(model, idName, criteria.fields);
37-
// TODO: make it so
38-
// http://www.elastic.co/guide/en/elasticsearch/reference/1.x/search-request-source-filtering.html
39-
// http://www.elastic.co/guide/en/elasticsearch/reference/1.x/search-request-fields.html
40-
/* POST /shakespeare/User/_search
41-
{
42-
'_source': {
43-
'include': ['seq'],
44-
'exclude': ['seq']
45-
}
46-
} */
47-
48-
/* @raymondfeng and @bajtos - I'm observing something super strange,
49-
i haven't implemented the FIELDS filter for elasticsearch connector
50-
but the test which should fail until I implement such a feature ... is actually passing!
51-
... did someone at some point of time implement an in-memory filter for FIELDS
52-
in the underlying loopback-connector implementation? */
53-
5435
// Elasticsearch _source filtering code
55-
/* if (Array.isArray(criteria.fields) || typeof criteria.fields === 'string') {
36+
if (Array.isArray(criteria.fields) || typeof criteria.fields === 'string') {
37+
// eslint-disable-next-line no-underscore-dangle
5638
filter.body._source = criteria.fields;
5739
} else if (typeof criteria.fields === 'object' && Object.keys(criteria.fields).length > 0) {
58-
filter.body._source.includes = _.map(_.pickBy(criteria.fields, function(v, k) {
59-
return v === true;
60-
}), function(v, k) { return k; });
61-
filter.body._source.excludes = _.map(_.pickBy(criteria.fields, function(v, k) {
62-
return v === false;
63-
}), function(v, k) { return k; });
64-
} */
40+
// eslint-disable-next-line no-underscore-dangle
41+
filter.body._source = {
42+
includes: _.map(_.pickBy(criteria.fields, (v) => v === true), (v, k) => k),
43+
excludes: _.map(_.pickBy(criteria.fields, (v) => v === false), (v, k) => k)
44+
};
45+
}
6546
}
6647
if (criteria.order) {
6748
log('ESConnector.prototype.buildFilter', 'will delegate sorting to buildOrder()');
6849
filter.body.sort = self.buildOrder(modelName, idName, criteria.order);
69-
} else { // TODO: expensive~ish and no clear guidelines so turn it off?
70-
// var idNames = this.idNames(model); // TODO: support for compound ids?
50+
} else {
7151
// eslint-disable-next-line no-underscore-dangle
7252
const modelProperties = this._models[modelName].properties;
7353
if (idName === 'id' && modelProperties.id.generated) {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "loopback-connector-esv6",
3-
"version": "2.0.0",
3+
"version": "2.0.1",
44
"description": "LoopBack Connector for Elasticsearch 6.x and 7.x",
55
"main": "index.js",
66
"scripts": {

0 commit comments

Comments
 (0)