From f1d3608a84edb45198fa7cbf5073d03588e3e558 Mon Sep 17 00:00:00 2001 From: Alena Khineika Date: Fri, 16 Feb 2018 17:19:12 +0100 Subject: [PATCH] Allowing to have array like field names in schema --- lib/stream.js | 9 +++++++-- test/basic.test.js | 6 ++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/stream.js b/lib/stream.js index 85c39c5..bc02b9a 100644 --- a/lib/stream.js +++ b/lib/stream.js @@ -282,12 +282,17 @@ module.exports = function parse(options) { * @param {Object} schema the updated schema object */ addToField = function(path, value, schema) { - var field = schema[path] = _.get(schema, path, { + var defaults = {}; + + defaults[path] = { name: _.last(path.split('.')), path: path, count: 0, types: {} - }); + }; + _.defaultsDeep(schema, defaults); + var field = schema[path]; + field.count++; // debug('added to field', field); addToType(path, value, field.types); diff --git a/test/basic.test.js b/test/basic.test.js index e5ea2a5..191fb5f 100644 --- a/test/basic.test.js +++ b/test/basic.test.js @@ -18,7 +18,8 @@ describe('using only basic fields', function() { 'last_address_latitude': null, 'last_address_longitude': null, 'created_at': new Date(), - 'length': 29 + 'length': 29, + 'name[]': 'Annabeth Frankie' } ]; @@ -36,7 +37,8 @@ describe('using only basic fields', function() { 'length', 'name', 'stats_friends', - 'twitter_username' + 'twitter_username', + 'name[]' ]; assert.deepEqual(_.pluck(users.fields, 'name').sort(), field_names.sort()); });