tratando de mostrar datos en jade desde mongodb

tratando de mostrar datos desde el esquema de mongoose a la placa de jade pero funciona sin importar lo que intente, así que por favor, ayúdenme y gracias.

Primero aquí están mis modelos de esquema de libro / book.js

const mongoose = require('mongoose') const schema = mongoose.Schema const BookSchema = new schema({ title: String, author: String, isbn: Number, date: { type: Date, default: Date.now}, description: String }) module.exports = mongoose.model('Book', BookSchema) 

Y aquí está mi controlador para el modelo de libro.

  const Book = require('../models/book') const express = require('express') router = express.Router() router.route('/books') // Create a book .post( (req, res) => { const book = new Book() book.name = req.body.name book.save( (err) => { if (err) res.send(err) console.log('Book created! ') }) }) //get all books .get( (req, res) => { Book.find( (err, books) => { if (err) res.send(err) res.render('books', {title: 'books list'}) }) }) module.exports = router 

y por fin aquí está mi plantilla de jade

  extends layout block content if books each book in books h1 #{book.title} 

Hay múltiples errores / modificaciones requeridas en su código.

  1. mientras se encuentra, es mejor dar {} como primera entrada.

  2. Al renderizar la plantilla de libro, está utilizando la variable books para mostrar la lista de libros, pero no la está enviando desde la ruta. Necesitas enviar books en res.render .

Prueba esto:

 router.route('/books') // Create a book .post( (req, res) => { const book = new Book() book.name = req.body.name book.save( (err) => { res.send(err) console.log('Book created! ') }) }) //get all books .get((req, res) => { Book.find({},(err, books) => { if (err) res.send(err) res.render('books', {title: 'books list' , books : books})//need to send the books variable to the template. }) })