const { isPlainObject, has, get, isEqual } = require('lodash/fp');
const newDoc1 = { id: 1 };
const newDoc2 = { id: 2 };
const doc1 = {
args: {
"duration" : 1000,
"other": [1,2,3],
"phoneNumber" : {
"num_tlf" : "684410479",
"ext_tlf" : "34"
}
}
};
const doc2 = {
args: {
"duration" : 1000,
"other": [1,2,3],
"phoneNumber" : "684410479"
}
};
const hasPhoneNumberProp = has('num_tlf');
const getPhoneNumberProp = get('num_tlf');
const isPhoneNumber = (key, prop) => (
isPlainObject(prop) && key === 'phoneNumber' && hasPhoneNumberProp(prop)
);
const transform = function(newDoc, doc) {
if (Array.isArray(doc.args)){
newDoc.args = doc.args.reduce((acc, arg) => {
if (arg !== null) {
acc.push(arg.toString());
}
return acc;
}, []);
}
else if (doc.args && typeof doc.args === 'object') {
// En caso de objeto, comprobar si es `phoneNumber`
newDoc.args = Object.keys(doc.args).map((key) =>
isPhoneNumber(key, doc.args[key])
? getPhoneNumberProp(doc.args[key]).toString()
: doc.args[key].toString());
}
else if (doc.args) {
newDoc.args = doc.args.toString();
}
console.log(newDoc);
};
transform(newDoc1, doc1);
transform(newDoc2, doc2);
console.log(isEqual(newDoc1.args)(newDoc2.args));