gpt4 book ai didi

javascript - jade 通过 mongodb 数据库中的数据集对象进行迭代

转载 作者:太空宇宙 更新时间:2023-11-04 01:53:07 25 4
gpt4 key购买 nike

我正在使用expressjs构建一个书店应用程序并使用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" } ]

最佳答案

您不能在jade 文件中使用console.log,因为这应该是客户端脚本。你的“books”对象回到了服务器,你的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 });    

关于javascript - jade 通过 mongodb 数据库中的数据集对象进行迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48948380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com