Jadi saya punya beberapa data dalam database Mongo saya, yang saya .find() dengan mengekspresikan dan mengirimkannya ke tampilan EJS saya. cukup mudah. Tetapi masalahnya adalah ketika saya mencoba membacanya menggunakan <pre><%=%></pre> saya tidak terdefinisi. Ini seluruh kode:
> array data yang berisi objek di mongodb:

[{
  _id: 6069820f402d01120cda8cff,
  imageName: 'Dining Plate',
  imagePath: './public/assets/img/6.jpg',
  description: 'Wallpapers',
  __v: 0
}]

Kode ekspres di mana saya mendapatkannya dan mengirimkannya ke EJS:

app.get('/wallpapers/:id', ((req, res) => {
  const urlID = req.params.id;
  Thing.find({}, function (err, result) {
    if (err) {
      console.log(err);
    } else {
      var fres = result.filter(d => d._id == urlID);
      res.render('wallpaper-page',{fres});
    }
  });
})
)

Dan EJS:

<pre><%= fres.description%> %> </pre>

Dan sekarang kebingungan besar: ketika saya mengganti fres.description dengan fres._id, itu berfungsi dengan baik. Tapi hanya itu, itu tidak ingin mencetak nilai-nilai kunci lainnya. Saya sudah mencari jauh dan luas selama hampir sehari. Tapi tidak ada yang membantu. Ini menjengkelkan saya sekarang.

PS: console.log(fres.description) adalah undefined dan console.log(fres._id) berfungsi dengan baik.

Mengapa? Bagaimana cara memperbaikinya? Tolong beritahu saya jika Anda memerlukan kode lain.

1
lolman 4 April 2021, 12:29

2 jawaban

Jawaban Terbaik

Selain itu masalah dengan metode filter mengembalikan array, saya pikir Anda memiliki masalah lain mengakses data dari respons luwak.

Masalah ini dibahas di sini: Mongoose Return Data di dalam _doc objek. Anda dapat memeriksa jawaban saya dengan kode uji untuk menunjukkan beberapa metode untuk mengakses data dari respons luwak.

0
Đăng Khoa Đinh 4 April 2021, 17:54

Array.filter mengembalikan array. Jadi, var fres = result.filter(d => d._id == urlID); variabel fres adalah array dengan objek di dalamnya.

Dan jika Anda hanya membutuhkan objek di template EJS Anda, Anda harus melewati itu. res.render('wallpaper-page',{fres: fres[0]});

Sekarang Anda dapat mengakses tombol description secara langsung. Tapi saya tidak mengerti bagaimana fres._id berfungsi, itu juga harus undefined.

0
Som Shekhar Mukherjee 4 April 2021, 10:14