alexsk / mongoose-intl

Mongoose schema plugin for multilingual fields
MIT License
74 stars 31 forks source link

Not supports for aggregation queries #29

Open ArpithaMobinius opened 4 years ago

urko-b commented 4 years ago

Does anybody knows if they are going to fix this in aggregations?

I have this model:

const mongoose = require('mongoose');
const mongooseIntl = require('mongoose-intl');
const Schema = mongoose.Schema;
const functions = require('../../common/functions');

const Model = new Schema({
    id: { type: Schema.Types.String, required: true, unique: true },
    name: { type: Schema.Types.String, intl: true },
    goals: { type: Schema.Types.String, intl: true },
    department: { type: Schema.Types.String, intl: true },
    addressDirection: { type: Schema.Types.Mixed },
    workCenter: { type: Schema.Types.String, intl: true },
    hasEmployees: { type: Schema.Types.Boolean },
    workdayType: { type: Schema.Types.String, intl: true },
    report: { type: Schema.Types.String },
    tasks: { type: [Schema.Types.String] },
    educations: { type: Schema.Types.Mixed }, //formacion y ofimatica
    languages: { type: Schema.Types.Mixed, set: v => functions.processLanguage(v) },
    driverLicenses: { type: Schema.Types.Mixed }, //carnet conducir y carretillas
    competences: [{ type: Schema.Types.ObjectId, ref: 'competences' }],
    kpis: { type: [Schema.Types.String] },
    other: { type: Schema.Types.Mixed }, //otros puntos que se quieran identificar,  otros 1-4 
    category: { type: Schema.Types.String },
    area: { type: Schema.Types.String, intl: true },
    searchTags: { type: String }
}, { timestamps: true, versionKey: false, toJSON: { virtuals: true } });

//functions.processLanguage(
Model.plugin(mongooseIntl, { languages: process.env.LANG_AVAILABLE.split(','), defaultLanguage: process.env.LANG_DEFAULT });
Model.index({ searchTags: 'text' });
module.exports = mongoose.model('cardPositions', Model, 'cardPositions');

This is my controller find method:

module.exports.find = async ({ findBy = {}, projection = {} } = { findBy: {}, projection: {} }, language = process.env.LANG_DEFAULT) => {
    CardPositions.setDefaultLanguage(language);

    const aggregationPipe = [
        {
            $match: findBy
        },
        {
            $lookup: {
                from: 'competences',
                localField: "competences",
                foreignField: '_id',
                as: "competences"
            }
        },
        {
            $lookup: {
                from: 'reasigncardpositions',
                localField: "id",
                foreignField: 'cardPosition',
                as: "reasignCardPositions"
            }
        },
        {
            $lookup: {
                from: 'positions',
                localField: "reasignCardPositions.code",
                foreignField: 'code',
                as: "positions"
            }
        },
    ];
    return await CardPositions.aggregate(aggregationPipe);
};

This is the response with the aggregation:

{
    "_id": "5dde88a0611d34557e6416a9",
    "name": {
        "es": "Dirección General"
    },
    "goals": {
        "es": "Definir y aplicar la estrategia de la unión para conseguir la máxima rentabilidad y volumen de negocio de la forma más eficiente a corto, medio y largo plazo."
    },
    "department": {
        "es": "Dirección General"
    },
    "workdayType": {
        "es": "Ordinaria"
    },
    "area": {
        "es": "Dirección General"
    },
    "tasks": [
        "Enlace con los accionistas y propietarios.",
        "Objetivos de La Unión: Rentabilidad, volúmenes, posicionamiento comercial.",
        "Visión transversal: Subasta + centros de abastecimiento + cliente + usuario final + mercados + canales + marketing + comercial.",
        "Definición de la política comercial (Qué, a quién y cómo).",
        "Coordinación estratégica de Director de Ventas (DV), Director de Marketing (DM), Director de Compras (DC) y Director de Grandes Cuentas (DGC).",
        "Desarrollo y supervisión del DGC.",
        "Gestión de Recursos. Motivación y objetivación del Equipo Directivo.",
        "Presencia Institucional.",
        "Cuentas especiales (Dir. Cuenta).",
        "Otras responsabilidades del Negocio"
    ],
    "competences": [
        {
            "_id": "5dde88a0611d34557e641631",
            "name": "Adaptación y gestión del cambio",
            "createdAt": "2019-11-27T14:30:56.366Z",
            "updatedAt": "2019-11-27T14:30:56.366Z"
        },
        {
            "_id": "5dde88a0611d34557e641634",
            "name": "Orientación a resultados",
            "createdAt": "2019-11-27T14:30:56.373Z",
            "updatedAt": "2019-11-27T14:30:56.373Z"
        },
        {
            "_id": "5dde88a0611d34557e641635",
            "name": "Capacidad de Innovación",
            "createdAt": "2019-11-27T14:30:56.375Z",
            "updatedAt": "2019-11-27T14:30:56.375Z"
        },
        {
            "_id": "5dde88a0611d34557e64163b",
            "name": "Liderazgo",
            "createdAt": "2019-11-27T14:30:56.384Z",
            "updatedAt": "2019-11-27T14:30:56.384Z"
        },
        {
            "_id": "5dde88a0611d34557e64163d",
            "name": "Lealtad y sentido de pertenencia",
            "createdAt": "2019-11-27T14:30:56.388Z",
            "updatedAt": "2019-11-27T14:30:56.388Z"
        },
        {
            "_id": "5dde88a0611d34557e64163e",
            "name": "Orientación al cliente",
            "createdAt": "2019-11-27T14:30:56.390Z",
            "updatedAt": "2019-11-27T14:30:56.390Z"
        }
    ],
    "positions": [
        {
            "_id": "5d6f9b3454b234333843d69c",
            "name": {
                "es": "DIRECCION GENERAL"
            },
            "description": {
                "es": "DIRECCION GENERAL"
            },
            "id": "07a93326-a624-444b-a081-b1ea66737db1",
            "code": "00000076",
            "createdAt": "2019-11-27T14:30:56.454Z",
            "updatedAt": "2019-11-27T14:30:56.454Z"
        }
    ],
    "kpis": [],
    "id": "DNGL171198",
    "hasEmployees": true,
    "educations": {
        "studies": [
            "Titulación universitaria o grando superior en contabilidad y finanzas"
        ],
        "computerKnowledges": [
            "Usuario básico paquete Office"
        ]
    },
    "languages": {
        "english": "Inglés Alto"
    },
    "driverLicenses": {
        "hasForkliftTruckLicence": false,
        "B": false,
        "B_plus_E": false,
        "C": false,
        "C_plus_E": false,
        "D": false,
        "D_plus_E": false,
        "BTP": false
    },
    "other": {
        "other": [
            "MBA",
            "Liderazgo transformador"
        ]
    },
    "category": "DIRECTOR GENERAL",
    "searchTags": "DNGL171198 Dirección GeneralDefinir y aplicar la estrategia de la unión para conseguir la máxima rentabilidad y volumen de negocio de la forma más eficiente a corto medio y largo plazo.Dirección GeneralEnlace con los accionistas y propietarios. Objetivos de La Unión: Rentabilidad, volúmenes, posicionamiento comercial.,Visión transversal: Subasta + centros de abastecimiento + cliente + usuario final + mercados + canales + marketing + comercial.,Definición de la política comercial (Qué, a quién y cómo).,Coordinación estratégica de Director de Ventas (DV), Director de Marketing (DM), Director de Compras (DC) y Director de Grandes Cuentas (DGC).,Desarrollo y supervisión del DGC.,Gestión de Recursos. Motivación y objetivación del Equipo Directivo.,Presencia Institucional.,Cuentas especiales (Dir. Cuenta).,Otras responsabilidades del NegocioTitulación universitaria o grando superior en contabilidad y finanzas Usuario básico paquete OfficeI n,g,l,é,s, ,A,l,t,oMBA Liderazgo transformadorD I,R,E,C,T,O,R, ,G,E,N,E,R,A,LAdaptación y gestión del cambio Orientación a resultados,Capacidad de Innovación,Liderazgo,Lealtad y sentido de pertenencia,Orientación al cliente",
    "createdAt": "2019-11-27T14:31:07.728Z",
    "updatedAt": "2019-11-27T14:33:16.149Z",
    "report": null,
    "reasignCardPositions": [
        {
            "_id": "5dde88a0611d34557e641617",
            "code": "00000076",
            "cardPosition": "DNGL171198"
        }
    ]
}

And this is how should be returned:

{
        "name": "Dirección General",
        "goals": "Definir y aplicar la estrategia de la unión para conseguir la máxima rentabilidad y volumen de negocio de la forma más eficiente a corto, medio y largo plazo.",
        "department": "Dirección General",
        "workdayType": "Ordinaria",
        "area": "Dirección General",
        "tasks": [
            "Enlace con los accionistas y propietarios.",
            "Objetivos de La Unión: Rentabilidad, volúmenes, posicionamiento comercial.",
            "Visión transversal: Subasta + centros de abastecimiento + cliente + usuario final + mercados + canales + marketing + comercial.",
            "Definición de la política comercial (Qué, a quién y cómo).",
            "Coordinación estratégica de Director de Ventas (DV), Director de Marketing (DM), Director de Compras (DC) y Director de Grandes Cuentas (DGC).",
            "Desarrollo y supervisión del DGC.",
            "Gestión de Recursos. Motivación y objetivación del Equipo Directivo.",
            "Presencia Institucional.",
            "Cuentas especiales (Dir. Cuenta).",
            "Otras responsabilidades del Negocio"
        ],
        "competences": [
            {
                "_id": "5dde88a0611d34557e641631",
                "name": "Adaptación y gestión del cambio",
                "createdAt": "2019-11-27T14:30:56.366Z",
                "updatedAt": "2019-11-27T14:30:56.366Z"
            },
            {
                "_id": "5dde88a0611d34557e641634",
                "name": "Orientación a resultados",
                "createdAt": "2019-11-27T14:30:56.373Z",
                "updatedAt": "2019-11-27T14:30:56.373Z"
            },
            {
                "_id": "5dde88a0611d34557e641635",
                "name": "Capacidad de Innovación",
                "createdAt": "2019-11-27T14:30:56.375Z",
                "updatedAt": "2019-11-27T14:30:56.375Z"
            },
            {
                "_id": "5dde88a0611d34557e64163b",
                "name": "Liderazgo",
                "createdAt": "2019-11-27T14:30:56.384Z",
                "updatedAt": "2019-11-27T14:30:56.384Z"
            },
            {
                "_id": "5dde88a0611d34557e64163d",
                "name": "Lealtad y sentido de pertenencia",
                "createdAt": "2019-11-27T14:30:56.388Z",
                "updatedAt": "2019-11-27T14:30:56.388Z"
            },
            {
                "_id": "5dde88a0611d34557e64163e",
                "name": "Orientación al cliente",
                "createdAt": "2019-11-27T14:30:56.390Z",
                "updatedAt": "2019-11-27T14:30:56.390Z"
            }
        ],
        "kpis": [],
        "_id": "5dde88a0611d34557e6416a9",
        "positions": [],
        "id": "DNGL171198",
        "hasEmployees": true,
        "educations": {
            "studies": [
                "Titulación universitaria o grando superior en contabilidad y finanzas"
            ],
            "computerKnowledges": [
                "Usuario básico paquete Office"
            ]
        },
        "languages": {
            "english": "Inglés Alto"
        },
        "driverLicenses": {
            "hasForkliftTruckLicence": false,
            "B": false,
            "B_plus_E": false,
            "C": false,
            "C_plus_E": false,
            "D": false,
            "D_plus_E": false,
            "BTP": false
        },
        "other": {
            "other": [
                "MBA",
                "Liderazgo transformador"
            ]
        },
        "category": "DIRECTOR GENERAL",
        "searchTags": "DNGL171198 Dirección GeneralDefinir y aplicar la estrategia de la unión para conseguir la máxima rentabilidad y volumen de negocio de la forma más eficiente a corto medio y largo plazo.Dirección GeneralEnlace con los accionistas y propietarios. Objetivos de La Unión: Rentabilidad, volúmenes, posicionamiento comercial.,Visión transversal: Subasta + centros de abastecimiento + cliente + usuario final + mercados + canales + marketing + comercial.,Definición de la política comercial (Qué, a quién y cómo).,Coordinación estratégica de Director de Ventas (DV), Director de Marketing (DM), Director de Compras (DC) y Director de Grandes Cuentas (DGC).,Desarrollo y supervisión del DGC.,Gestión de Recursos. Motivación y objetivación del Equipo Directivo.,Presencia Institucional.,Cuentas especiales (Dir. Cuenta).,Otras responsabilidades del NegocioTitulación universitaria o grando superior en contabilidad y finanzas Usuario básico paquete OfficeI n,g,l,é,s, ,A,l,t,oMBA Liderazgo transformadorD I,R,E,C,T,O,R, ,G,E,N,E,R,A,LAdaptación y gestión del cambio Orientación a resultados,Capacidad de Innovación,Liderazgo,Lealtad y sentido de pertenencia,Orientación al cliente",
        "createdAt": "2019-11-27T14:31:07.728Z",
        "updatedAt": "2019-11-27T14:33:16.149Z",
        "report": null
    },

@alexsk Could you please tell us If you will improve this? thx