mongocat
Version:
✨ Mongocat 😺 is easy to use, configuration based Denormalization mongoose plugin for read heavy applications. Mongocat reduces write complexity too.
35 lines (31 loc) • 846 B
text/typescript
import { Types } from 'mongoose';
// Declare a flatten function that takes
// object as parameter and returns the
// flatten object
export const flattenObj = (ob: Record<string, any>) => {
// The object which contains the
// final result
const result: { [key: string]: any } = {};
// loop through the object "ob"
for (const i in ob) {
// We check the type of the i using
// typeof() function and recursively
// call the function again
if (
!(ob[i] instanceof Types.ObjectId) &&
typeof ob[i] === 'object' &&
!Array.isArray(ob[i])
) {
const temp = flattenObj(ob[i]);
for (const j in temp) {
// Store temp in result
result[i + '.' + j] = temp[j];
}
}
// Else store ob[i] in result directly
else {
result[i] = ob[i];
}
}
return result;
};