Mangosta: cómo filtrar una matriz de objetos dentro de un objeto

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 matchpropiedad es donde se introduce la consulta.

Post.findById(id)
    .populate({ path: 'comments', match: { 'type': 'public' } })
    .exec((err, postWithFilteredComments) => {
        res.json({ postWithFilteredComments })
    })

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=384500&siteId=1
Recomendado
Clasificación