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

126
Visualizações
Población profunda dinámica con MongoDB

Me pregunto si puede completar dinámicamente en profundidad con MongoDB, específicamente estoy usando mongoose en una aplicación express. Estoy tratando de construir un clon básico de reddit. En mi modelo Post, estoy tratando de crear una cadena de respuesta. Las respuestas podrían anidarse, ya que alguien podría responder a una respuesta de una respuesta. ¿Puedo completar esa cadena de respuesta? Solo puedo averiguar cómo completar la primera capa de respuestas. Según la lectura de la documentación y la observación de otras respuestas en el desbordamiento de la pila, no creo que esto sea posible, pero quería plantear la pregunta antes de remodelar mis datos. Aquí está mi modelo de publicación:

 const postSchema = new mongoose.Schema( { content: { type: String, required: [true, 'A post can not be empty'], }, thread: { type: mongoose.Schema.ObjectId, ref: 'Thread', }, isReply: { type: Boolean, default: false, }, parentPost: { type: mongoose.Schema.ObjectId, ref: 'Post', }, }, { toJSON: { virtuals: true }, toObject: { virtuals: true }, } ); postSchema.virtual('replies', { ref: 'Post', foreignField: 'parentPost', localField: '_id', });

Y el controlador de subprocesos donde estoy haciendo la consulta y tratando de completar la cadena de respuesta:

 exports.getThread = factory.getOne(Thread, 'thread', { path: 'posts', // Deep populate the replies from each post populate: { path: 'replies' }, }); // This is the factory getOne function exports.getOne = (Model, modelName, popOptions) => catchAsync(async (req, res, next) => { const query = popOptions ? Model.findById(req.params.id).populate(popOptions) : Model.findById(req.params.id); const doc = await query; if (!doc) return next( new AppError(`No ${modelName} could be found with that id`, 404) ); res.status(200).json({ status: 'success', data: { [modelName]: doc }, }); });
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

El comportamiento deseado no está integrado en la mangosta.

También aconsejaría contra una estructura de datos que lo haga necesario. ¿Consideró otras estructuras de árbol de documentos (puede encontrar muchos ejemplos aquí o consultar el docu de mongodb)? Encuentro que los árboles con referencias a los padres son más útiles para los comentarios.

Pero volvamos a la población recursiva:

Por lo general, no querrá una consulta que pueda devolver cantidades impredecibles de datos. ¡Así que solo haga esto si limita la cantidad de documentos devueltos!

Hay otra pregunta que proporciona algunos ejemplos de implementaciones personalizadas de población de relaciones recursivas ( enlace )

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