es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

ejs imprimir valor del arreglo desde un id específico

Envío una matriz de objetos llamada “gudangs” desde mi controlador app.js de la siguiente manera:

res.render('daftar-staff', {
     title: 'Daftar Staff',
     session: req.session,
     layout: 'layouts/main-layouts',
     gudangs
})

Se envía correctamente a la vista ejs y lo recibo de la siguiente manera:

[{ "_id": new ObjectId("61a804c4059d1d90797c8ad0"), "nama": 'gudang benowo', "alamat": '', "__v": 0 },
{ "_id": new ObjectId("61a804ecdfa6962a0162850f"), "nama": 'gudang pakal', "alamat": '', "__v": 0 },
{ "_id": new ObjectId("61a86fb98b3cd7f948a388b7"), "nama": 'gudang tandes', "alamat": 'tandes no 19', "isFull": 'true', "__v": 0 },
{ "_id": new ObjectId("61a872c07cc01577ddf78b53"), "nama": 'gudang kepatihan', "alamat": '', "isFull": 'true', "__v": 0 },
{ "_id": new ObjectId("61a954eee3c45454070d4b10"), "alamat": 'jalan benowo 13', "__v": 0 },
{ "_id": new ObjectId("61a955954e757a01405e44b4"), "alamat": 'jalan benowo 13', "__v": 0 }]

Lo que quiero es imprimir “nama” en el gudang específico con el _id.

En este momento, puedo lograr esto iterando a través de toda la matriz de gudangs de la siguiente manera:

<% gudangs.forEach((gudang, i) => { %>
    <% if(gudang._id === 'xxxx'){ %>
        <%= gudang.nama %>
    <% } %>
<% }) %>

Me preguntaba si hay una forma más sencilla de hacer esto.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma más sencilla de lograr esto utilizando el método find() proporcionado por Mongoose. Suponiendo que tienes acceso al modelo Gudang, puedes hacer lo siguiente:

    1. Agrega un parámetro a la función res.render() que contenga el _id específico que deseas encontrar:

      res.render(‘daftar-staff’, {
      title: ‘Daftar Staff’,
      session: req.session,
      layout: ‘layouts/main-layouts’,
      gudangs,
      specificId: ‘xxxxxxxxxxxx’
      })

    2. En tu archivo EJS, utiliza el método find() para buscar el Gudang específico con el _id coincidente:

      <% let specificGudang = gudangs.find(gudang => gudang._id.toString() === specificId.toString()) %>
      <% if (specificGudang) { %>
      <%= specificGudang.nama %>
      <% } %>

    Esto encontrará el Gudang con el _id específico que pasaste en la función res.render(), e imprimirá su nombre (nama). No es necesario iterar a través de todo el array para encontrarlo. Ten en cuenta que convertimos ambos _ids a strings antes de compararlos, ya que no siempre estarán en el mismo formato.

Comments are closed.