Saya bertanya-tanya apakah menggunakan res.locals seperti dalam contoh kode ini adalah praktik yang buruk atau jika ada masalah jika Anda menggunakannya dengan cara ini:

app.use((req, res, next) => {
    const session = req.cookies.session
    if (session) {
        db.admin.auth().verifySessionCookie(session, true)
            .then((decodedData) => {
                res.locals.userId= decodedData.uid
                next();
            })
            .catch(() => {
                res.locals.userId = false
                next();
            })
    } else {
        res.locals.userId = false
        next();
    }

app.get("/", async (req, res) => {
    console.log(res.locals.userId)
    res.render("home.hbs")
})

Pada dasarnya saya:

  1. Saya memverifikasi cookie sesi di app.use (Saya menggunakan auth firebase)
  2. Saya mengatur res.locals.userId = userId
  3. Dan kemudian gunakan lokal yang baru saja saya atur di app.get

(Saya perlu melakukannya dengan cara ini karena saya membutuhkan userId dalam pandangan saya, jika tidak, saya perlu menjalankan fungsi verificationSessionCookie 2 kali untuk mendapatkan userId yang ingin saya hindari)

0
eek 13 Mei 2021, 01:22

1 menjawab

Jawaban Terbaik

res.locals secara eksplisit dirancang sebagai tempat bagi Anda untuk meletakkan hal-hal yang kemudian diinginkan/perlu digunakan oleh bagian penanganan permintaan dan sering digunakan untuk rendering template. Jadi, inilah tepatnya yang seharusnya digunakan.

Saya bertanya-tanya apakah menggunakan res.locals seperti dalam contoh kode ini adalah praktik yang buruk atau jika ada masalah jika Anda menggunakannya dengan cara ini

Tidak ada hal buruk yang akan terjadi. Inilah gunanya res.locals. Lihat referensi dokumen untuk konfirmasi lebih lanjut.

2
jfriend00 12 Mei 2021, 22:40