gpt4 book ai didi

node.js - 如何在一个 Express app.get() 中使用多个 res.render()

转载 作者:行者123 更新时间:2023-12-04 09:38:44 25 4
gpt4 key购买 nike

我想在同一个 app.get() 中多次使用 res.render。每个 res.render() 都应该从一个单独的数据库表中渲染细节。

我曾尝试将 Express 中间件与 next() 一起使用,但我无法开始工作。

有人可以解释我如何渲染多个元素吗?谢谢!

app.get("/add-item", getCategories, getPayees);

function getCategories(req, res) {
// Code here
Category.find({}, function (err, categories) {
res.render("add-item", {
savedCategories: categories
});
});
};

function getPayees(req, res) {
// Code here
Payee.find({}, function (err, payees) {
res.render("add-item", {
savedPayees: payees
});
});
};
<form action="/add-item" method="post">

<div class="form-group">

<label for="itemCategory">Category</label>
<select class="form-control form-control-sm" id="itemCategory" name="itemCategory">

<% savedCategories.forEach(function(category) { %>
<option><%= category.name %></option>
<% }); %>

</select>

</div>

<div class="form-group">

<label for="itemPayee">Payee</label>
<select class="form-control form-control-sm" id="itemPayee" name="itemPayee">

<% savedPayees.forEach(function(payee) { %>
<option><%= payee.name %></option>
<% }); %>

</select>

</div>

</div>

<button class="btn btn-primary btn-sm" type="submit" name="submit">Add</button>

</form>

最佳答案

你不应该多次调用 res.render 。相反,将您的数据添加到 res.locals 然后呈现页面:

app.get("/add-item", getCategories, getPayees, renderForm);

function getCategories(req, res, next) {
// Code here
Category.find({}, function (err, categories) {
if (err) next(err);
res.locals.savedCategories = categories;
next();
});
};

function getPayees(req, res, next) {
// Code here
Payee.find({}, function (err, payees) {
if (err) next(err);
res.locals.savedPayees = payees;
next();
});
};

function renderForm(req, res) {
res.render("add-item");
};

关于node.js - 如何在一个 Express app.get() 中使用多个 res.render(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62429152/

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