Randomize Cards
Agar setiap pengguna yang mengakses halaman Cards diberikan soal yang random, maka kita bisa menambahkan fungsi random
router.get('/', (req, res) => {
const numberOfCards = cards.length
const flashCardId = Math.floor(Math.random() * numberOfCards)
res.redirect(`/cards/%{flashCardId}/?side=question`)
})
Kemudian coba kode tersebut di browser dan pastikan berfungsi
Selanjutnya, jika user datang langsung dengan memasukkan id soal, seharusnya muncul error, karena tidak ada soal yang keluar. Soal membutuhkan query agar dapat dimunculkan. Oleh karena itu, kita bisa menambahkan
// cards.js
// di dalam GET /:id
// dibawah id dan side
if (!side) {
res.redirect(`/cards/${id}?side=soal`)
}
Lalu pastikan kode tersebut berfungsi
Terakhir, buat link untuk mendapatkan soal selanjutnya
// card.pug
...
a(href='/cards') Soal Lain
Masih belum terakhir ternyata. Jika pengguna memasukkan ?side=hint
maka akan terjadi kesalahan, bagaimana kira kira solusinya?
Kemudian, kita akan mengubah struktur tampilan menjadi
- Halaman index menambahkan link untuk memulai kuis
- Memindahkan sapaan dan tombol goodbye ke layout.pug
- Namun ketika mengecek halaman cars, nama sapaan tidak muncul. Solusinya? Silakan ambil nama dari cookies dan kirimkan ke template
- Membuka halaman cards, dan nama masih kosong. Mari kita login terlebih dahulu
- Masalah selanjutnya, jika kita menekan goodbye, di halaman /hello masih memunculkan sapaan dan button goodbye
- Untuk mensolusikannya, di layout.pug, buat sebuah kondisional jika nama ada, maka memunculkan kedua hal tersebut