Comparing version 8.6.0 to 8.6.1
@@ -5,2 +5,3 @@ 'use strict'; | ||
const Hoek = require('hoek'); | ||
const RethinkDB = require('rethinkdb'); | ||
@@ -39,3 +40,3 @@ | ||
internals.scan(items, table, (field) => { | ||
return internals.scan(items, table, false, (field) => { | ||
@@ -47,4 +48,2 @@ if (field.$reql_type$ === 'GEOMETRY' && | ||
} | ||
return field; | ||
}); | ||
@@ -56,3 +55,3 @@ }; | ||
internals.scan(items, table, (field) => { | ||
return internals.scan(items, table, true, (field) => { | ||
@@ -64,4 +63,2 @@ if (Array.isArray(field) && | ||
} | ||
return field; | ||
}); | ||
@@ -74,3 +71,3 @@ }; | ||
let near = null; | ||
internals.scan(items, table, (field, index) => { | ||
internals.scan(items, table, false, (field, index) => { | ||
@@ -100,11 +97,13 @@ if (typeof field !== 'function' || | ||
internals.scan = function (items, table, each) { | ||
internals.scan = function (items, table, clone, each) { | ||
if (!items) { | ||
return; | ||
return items; | ||
} | ||
const array = Array.isArray(items) ? items : [items]; | ||
const result = []; | ||
const isArray = Array.isArray(items); | ||
const array = isArray ? items : [items]; | ||
for (let i = 0; i < array.length; ++i) { | ||
const item = array[i]; | ||
let item = array[i]; | ||
for (let j = 0; j < table._geo.length; ++j) { | ||
@@ -133,6 +132,32 @@ const index = table._geo[j]; | ||
ref[key] = each(ref[key], index.name); | ||
const override = each(ref[key], index.name); | ||
if (override === undefined) { | ||
continue; | ||
} | ||
if (!clone) { | ||
ref[key] = override; | ||
} | ||
else { | ||
item = Hoek.clone(item); | ||
internals.override(item, path, override); | ||
} | ||
} | ||
} | ||
result.push(item); | ||
} | ||
return (isArray ? result : result[0]); | ||
}; | ||
internals.override = function (item, path, override) { | ||
let ref = item; | ||
for (let i = 0; i < path.length - 1; ++i) { | ||
ref = ref[path[i]]; | ||
} | ||
ref[path[path.length - 1]] = override; | ||
}; |
@@ -582,3 +582,3 @@ 'use strict'; | ||
if (this._geo) { | ||
Geo.read(items, this); | ||
return Geo.read(items, this); | ||
} | ||
@@ -592,3 +592,3 @@ | ||
if (this._geo) { | ||
Geo.write(items, this); | ||
return Geo.write(items, this); | ||
} | ||
@@ -595,0 +595,0 @@ |
{ | ||
"name": "penseur", | ||
"description": "Lightweight RethinkDB wrapper", | ||
"version": "8.6.0", | ||
"version": "8.6.1", | ||
"author": "Eran Hammer <eran@hammer.io> (http://hueniverse.com)", | ||
@@ -6,0 +6,0 @@ "repository": "git://github.com/hueniverse/penseur", |
73888
1820