Saya ingin mencetak pengguna yang saat ini masuk, dengan mendapatkan nama pengguna dari database saya.

Dalam model saya, properti username memegang skema berikut:

{
  type: String, 
  required: true
}

index.js:

const users = require('../model/db');
router.get('/profiles/instructor', function (req, res, next) {
  users.find({}, 'username', (err, doc)=>{

    if(err){
      console.log('err while finding on instructor at index.js => ' + err)
    }else{
      console.log(doc)
      res.render('./profiles/instructor', { 
        title: 'Courstak | Instructor Profile',
        name: doc
// etc......
})

mis.hbs:

<h5>{{name}}</h5>

Masalah yang saya alami adalah ketika saya membuka situs web saya, itu menunjukkan semua pengguna dalam database, bukan hanya pengguna yang saat ini masuk:

Tangkapan layar kesalahan:

enter image description here

0
Muhammad Sharaqi 7 Maret 2020, 01:36

1 menjawab

Jawaban Terbaik

Anda menyebutkan dalam komentar OP Anda bahwa Anda menggunakan strategi passport-local, dan tampaknya strategi itu terhubung dengan sangat baik dengan express seperti yang Anda harapkan, jadi req.user harus memiliki informasi yang Anda cari, yang akan membuat kode Anda seperti ini (dengan asumsi Anda ' ikuti dokumentasi untuk menggunakan passport-local) dengan benar:

router.get('/profiles/instructor', function (req, res, next) {
    res.render('./profiles/instructor', { 
        title: 'Courstak | Instructor Profile',
        name: req.user.username
    });
});

Apa yang saya sarankan juga adalah menggunakan beberapa middleware seperti connect-ensure-login untuk memastikan bahwa pengguna masuk dan memiliki sesi yang valid. Anda dapat menambahkan middleware di atas seperti:

var connectEnsureLogin = require('connect-ensure-login')

router.get('/profiles/instructor',connectEnsureLogin.ensureLoggedIn(), function (req, res, next) {
    // ...
}
0
megubyte 8 Maret 2020, 00:39