Delgado :
Tengo una lista de mensajes y cada post contiene una serie de comentarios, cada comentario podría ser privados o públicos y quiero mostrar Administradores todos los comentarios públicos y privados, pero los usuarios normales que quiero mostrarles comentarios única públicas.
aquí es una parte del post y comentario de esquema:
const PostSchema = new mongoose.Schema({
title: String,
comments: [{ type: Schema.Types.ObjectId, ref: 'Comment' }]
})
const CommentSchema = new mongoose.Schema({
body: String,
type: { type: String, enum: ['public', 'private'] }
})
aquí está la solución Vine con: Coge el cargo por ID:
const post= await Post.findById(id);
y luego filtrar:
post.comments = post.comments.filter(c => c.type != "private");
return res.json(post)
pero quiero hacerlo mangosta completo si eso es posible.
jstarnate:
Actualizar el esquema comentario:
const CommentSchema = new mongoose.Schema({
body: String,
public: Boolean,
post: { type: Schema.Types.ObjectId, ref: 'Post' }
})
Se puede utilizar de mangosta populate()
método para extraer los comentarios debajo de un puesto específico. La match
propiedad es donde se introduce la consulta.
Post.findById(id)
.populate({ path: 'comments', match: { 'type': 'public' } })
.exec((err, postWithFilteredComments) => {
res.json({ postWithFilteredComments })
})