node-object-mapper
node-object-mapper copied to clipboard
Transform runs multiple times in nested array
Hello!
I have a use case where I'm trying to transform a key in a deeply nested array + object structure. See example below:
var objectMapper = require('object-mapper');
var map = {
'[].data.children[].person_id': {key: 'entity[].humans.children[].person.id', transform: (e) => e+'_+1'},
};
var arr = [{
"id": "1",
"data": {
"children": [
{
"person_id": "123123123"
},
{
"person_id": "12312312"
},
{
"relation_id": "111"
}
]
}
}];
var dest = objectMapper(arr, map);
console.log(JSON.stringify(dest, null, 4))
I was expecting an output of:
{
"entity": [ {
"humans": {
"children": [ {
"person": {
"id": "123123123_+1"
}
},
{
"person": {
"id": "12312312_+1"
} } ]
}
} ]
}
Instead, I get:
{
"entity": [ {
"humans": {
"children": [ {
"person": {
"id": "123123123,12312312_+1_+1"
}
}
]
}
}
]}
I'm doing some further debugging now, but it appears the transform() function gets called multiple times in the array iteration.
I have updated deps of my project and i catch this bug too (object-mapper updated too from 6.0.1 to 6.2.0).
I will try localize problem.
Problem reveals on 6.0.1 => 6.1.0 update.
@pguijarr, @wankdanker could you check this changes and help us find bug?
ah... this is the problem...same for me #81 ... Thanks for the heads up on the version. Yes, 6.0.1 does not have this problem ! I will close #81
Same issue using "6.2.0"
I had the same issue using version 6.2.0
Same issue on version 6.2.0 - This breaks the show in my project. :-(
I'm seeing the same issue. My workaround is to define any properties that don't use a transform function first.
const map = {
"foo": [
{
key: "y" // Works a s expected
},
{
key: "foo",
transform: function (value: string) {
return value + "_foo";
}
},
{
key: "a" // This will use foo's transform function
},
{
key: "baz",
transform: function (value: string) {
return value + "_baz";
},
}
],
"bar": "x"
};
const src = {
foo: 'blah',
bar: 'something'
};
console.log(objectMapper.merge(src, map))
This is quite a serieus problem. Multiple transformations are just not possible without interfering with each other. Is there an outlook on a fix ? That would be awesome !
is there any update on this?
Is there any update on this issue?