我正在建立一个带有快递的书店应用程序,并使用mongodb来存储数据我有一个我想要显示给我的index.jade的书籍数据库,但我一直在无限循环中运行
extends layout
block content
.content
each book in books
.book
img(src="/images/dumbk.png", width="150px", height="200px")
h4.book-title #{book.title}
h6.book-dtls Price: #{book.price} SDG
p.book-desc #{book.description}
a.btn.btn-primary.view(href="/books/details/1") View Book
这是我的index.js
var express = require('express');
var router = express.Router();
var Book = require('../models/bookModel');
/* GET home page. */
router.get('/', /*ensureAuthenticated, */function(req, res, next) {
Book.find({}, function (err, books) {
if (err) {console.log(err);}
var model = {books: books}
console.log(model);
res.render('index', /*{books: books},*/ { title: 'Members' });
});
});
在记录模型之后,它记录了我的数据库中的所有书籍,但当我尝试使用jade文件中的book.title记录书名时,它不会呈现它们并继续运行无限循环
-console.log(book.title)
result was undefined
所以我确定错误在循环和格式
中当我记录模型时输出是
[ { _id: the id, title: "book title", author: "author", price: "10", description: "a book description", stock: "5", cover: "dumbk.png" } ]
答案 0 :(得分:0)
您不能在jade文件中使用console.log,因为这应该是客户端脚本。你的"书籍"对象返回服务器,您的console.log将在客户端执行后执行。试试这个(虽然有更好的方法):
extends layout
block content
each book in books
.book
img(src="/images/dumbk.png", width="150px", height="200px")
h4.book-title #{book.title}
h6.book-dtls Price: #{book.price} SDG
p.book-desc #{book.description}
a.btn.btn-primary.view(href="/books/details/1") View Book
script.
const books = JSON.parse("!{JSON.stringify(books)}");
console.log(books[0] && books[0].title);
更新:根据您的评论,您甚至不想要这样,只是为了让您的Jade文件呈现图书。为此,您应该将books数组传递给渲染器选项:
res.render('index', { title: 'Members', books });