Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

403
Visualizações
¿Cómo hacer una unión interna con mongodb, mongoose y nestjs?

Tengo un sistema con mongodb genéricoizado por mongoose en nest js, ¿cómo traigo datos de clientes y productos en la misma solicitud?

en la base de datos los datos son así:

 "_id": "621d2137abb45e60cf33a2d4", "product_id": [ "621cedbf79d68fb4689ef0cb", "621cedbf79d68fb4689ef0cb", "621cedbf79d68fb4689ef0cb" ], "client_id": "621d19f890ec693f1d553eff", "price": 597, "__v": 0

mi servicio:

 findAll() { return this.sealsModel.find().exec(); }

De esta manera no funcionó:

 findAll() { var a = this.sealsModel.find().exec() return this.sealsModel.aggregate([{ $lookup: { from: 'seals', localField: 'client_id', foreignField: '_id', as: 'client' } }]) .exec() }

pero devuelve esto:

 "_id": "621d3e0a1c3bcac85f79f7cc", "product_id": [ "621cedbf79d68fb4689ef0cb", "621cedbf79d68fb4689ef0cb", "621cedbf79d68fb4689ef0cb" ], "client_id": "621d19f890ec693f1d553eff", "price": 597, "__v": 0, "client": []
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Una alternativa al operador $lookup de Mongo es la función de populate de Mongoose. Para usarlo correctamente, primero debe actualizar su modelo.

Debería tener un modelo de cliente que se vea así:

 // /models/Client.js const mongoose = require("mongoose"); const clientSchema = mongoose.Schema({ _id: mongoose.Schema.Types.ObjectId, ... // the rest of your fields }); module.exports = mongoose.model('Client', clientSchema);

La clave para notar aquí es la última línea. Se hace referencia al modelo como "Cliente".

El cambio que tienes que hacer es principalmente en tu modelo Seal :

 // /models/Seal.js const mongoose = require("mongoose"); const sealSchema = mongoose.Schema({ _id: mongoose.Schema.Types.ObjectId, client_id: { type: mongoose.Schema.Types.ObjectId, ref: "Client" // We use the same name we gave to our client model in the last file } }); module.exports = mongoose.model('Seal', sealSchema);

Luego, en su código, debería poder usar:

 const Seal = require("YOUR_PATH/models/Seal.js") Seal.find().populate("client_id")

Una nota al margen importante: su modelo muestra la ID de mongo como una cadena

 "_id": "621d3e0a1c3bcac85f79f7cc", "client_id": "621d19f890ec693f1d553eff", <---

Asegúrese de que el campo client_id sea del tipo ObjectId o no funcionará:

 "client_id": ObjectId("621d19f890ec693f1d553eff")
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda