如何在一个 Express app.get() 中使用多个 res.render()
How to use multiple res.render() in one Express app.get()
我想在同一个 app.get() 中多次使用 res.render。每个 res.render() 都应该从单独的数据库 table.
中呈现详细信息
我已经尝试将 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");
};
我想在同一个 app.get() 中多次使用 res.render。每个 res.render() 都应该从单独的数据库 table.
中呈现详细信息我已经尝试将 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");
};