Популярный объекты, снабженные ссылками после aggregate

Я работаю с mongoose и express. Я делаю операцию aggregate на этих данных:

{
   _id: ...,
   numeroDeFolio: '23546',
   ... : ..., 
   folioLineas: [
       {
            numeroDePedido: '23546-0',
            modeloCompleto: ObjectId(....)
            ... : ...
       }
   ]  

Он реализовал следующие операции:

 // Los folios que esten marcados como terminados
 arreglo redact  [ { '$match': { terminado: true} },
  //Coincidiencia con el numero dado de folio
  { '$match': { numeroDeFolio: '23546' } },

     { '$project':
     { folioLineas: [Object],
       nivelDeUrgencia: true,
       ordenesGeneradas: true,
       impreso: true,
       terminado: true,
       numeroDeFolio: true,
       cliente: true,
       fechaFolio: true,
       fechaEntrega: true,
       vendedor: true,
       observaciones: true } },
  //Separo por por objeto para poder obtener modeloCompleto y poder hacer $lookup
  { '$unwind': { path: '$folioLineas', preserveNullAndEmptyArrays: true } },
  { '$lookup':
     { from: 'modelosCompletos',
       localField: 'folioLineas.modeloCompleto',
       foreignField: '_id',
       as: 'folioLineas.modeloCompleto' } },
  // Unimos todo de nuevo para recuperar la estructura inicial
  { '$group': { _id: [Object], folioLineas: [Object] } },
  { '$project':
     { _id: '$_id._id',
       nivelDeUrgencia: '$_id.nivelDeUrgencia',
       ordenesGeneradas: '$_id.ordenesGeneradas',
       impreso: '$_id.impreso',
       terminado: '$_id.terminado',
       numeroDeFolio: '$_id.numeroDeFolio',
       cliente: '$_id.cliente',
       fechaFolio: '$_id.fechaFolio',
       fechaEntrega: '$_id.fechaEntrega',
       vendedor: '$_id.vendedor',
       observaciones: '$_id.observaciones',
       folioLineas: '$folioLineas' } } ]

До сих пор весь код функционирует, согласно которому я жду. В обобщенные счета я удаляю folioLineas, которые не совпадают. Я делаю все следующей формой

Folio.aggregate(arregloRedact).then(folios => {

            return Folio.populate(folios, { path: 'folioLineas.modeloCompleto.modelo' })

        }).then(folios => {

            return RESP._200(res, null, [
                { tipo: 'folios', datos: folios },
            ]);

        })
        .catch(err => {
            return RESP._500(res, {
                msj: 'Hubo un error filtrando los folios',
                err: err,
            });
        });

Проблема приходит, когда я делаю populate. Эта линия return Folio.populate(folios, { path: 'folioLineas.modeloCompleto.modelo' })

Конвертируй это поле в недействительном

 "folioLineas": [
            {
                "nivelDeUrgencia": "PRODUCCIÓN",
                "almacen": true,
                "ordenesGeneradas": true,
                "trayectoGenerado": false,
                "terminado": true,
                "ordenes": [ ],
                "coloresTenidos": [],
                "procesos": []
                "_id": "5c8c188fafc1846b1885bca9",
                "modeloCompleto": [
                    {
                        "_id": "5c7fdb1ae6af8034987fc49b",
                        "medias": true,
                        "porcentajeDeMerma": 2,

                         //Este es el problema
                        "modelo": null,



                        "tamano": "5c780a93570b494530808726",
                        "color": "5c79ab8043aa6a4ff076ed0a",
                        "terminado": "5c780534f6c59e4ce05cc783",
                        "laserAlmacen": {
                            "imagenes": [],
                            "_id": "5c7fdb1ae6af8034987fc49c",
                            "laser": ""
                        },
                        "versionModelo": "",
                        "familiaDeProcesos": "5c79adc443aa6a4ff076ed14",
                        "procesosEspeciales": [],
                        "esBaston": true,
                        "lotes": [],
                        "nombreCompleto": "1002-18-1 PERLA-B-",
                        "existencia": 0,
                        "__v": 0
                    }

Поле не является недействительным. Нормальный populate возвращает мне данные, которые соответствуют, но сделав aggregae() не я hes возможный популярный эти данные.

0
задан 20.03.2019, 23:05
1 ответ