У меня есть вид, маршрут и контроллер для моей приборной панели. У меня также есть маршрут, вид и контроллер для виджетов. На приборной панели я хочу показать эти виджеты. Если я перейду к localhost: 3000 / widget , я действительно смогу увидеть, как данные извлекаются из базы данных, и все это работает. Но в моем представлении панели управления, если я попытаюсь включить его как:
<%- include('../widget/widget.ejs') %>
Тогда никакие данные не отображаются вообще, и я не вижу никаких ошибок в консоли. Как правильно это сделать?
Вот виджет маршрута:
router.get('/widget', isAuth, widgetController.getIndex);
Контроллер виджетов:
const Product = require("../models/product");
exports.getIndex = (req, res, next) => {
Product.find({ "requests.userId": req.user }, {title: 1})
.then(product => {
res.render("widget/widget", {
path: "/widget",
product: product
});
})
.catch(err => {
console.log(err);
});
};
Виджет:
<% for (const products of product) { %>
<li><i class="list-box-icon sl sl-icon-doc"></i>
<strong><%= products.title %></strong>
</li>
<% } %>
Маршрут панели управления:
router.get('/dashboard', accountController.getDashboard);
Контроллер панели инструментов содержит довольно много кода, поэтому я просто сократил его до простейшего вида.
exports.getDashboard = (req, res, next) => {
if (req.user._id == '5d57abbd24e21t41u56c1t66') {
Product.find({ status: "pending" })
.sort({ createdAt: -1 })
.then(products => {
res.render("account/dashboard", {
pageTitle: "Dashboard",
path: "/dashboard",
products: products
});
})
.catch(err => {
const error = new Error(err);
error.httpStatusCode = 500;
return next(error);
});