node+express+ejs中传参问题,在传参一直提示参数未定义

大概描述一下结构:

index.ejs:显示数据
list.ejs:后台获取到的数据列表模板
admin.js:数据渲染文件,用来获取后台数据的

三者之间的联系,想通过admin.js获取到数据库中的所有文章,通过locals.list传递到list.ejs中,然后把list.ejs渲染到index.ejs局部。
index.ejs
clipboard.png
以下是通过include引入获取后台数据列表
clipboard.png
在网上查到ejs 2.0+可以通过<%- inclund("article/list",{list:locals.list})传参,可是在list.ejs里并没接收到参数。控制台依然报错
list.ejs
clipboard.png
admin.js

clipboard.png
下面是错误提示

clipboard.png

阅读 5.7k
1 个回答

经过不懈的努力,目前问题已经解决,问题主要出现在数据逻辑上,因为我是需要在admin/index中显示从后台获取的数据列表,以下是核心代码:

//后台首页(获取admin)
router.get("/admin",function (req, res, next) {
    var page = 1;//条数
    var limit = 3;
    page = req.query.page == undefined ? page : req.query.page;

    res.locals.page = page;
    console.log("page:"+page)
    //便利文章条数
    Article.count({},function (err, count) {
        if (err) return next(err);
        res.locals.count = count;
        console.log("count:" + count);
        //遍历所有文章
        Article.find({}, null, {
            sort: {"_id": -1},
            skip: (page - 1) * limit,
            limit: limit
        }, function (err, list) {
            if (err) return next(err);
            // var arr = Object.values(list);
            console.log("list:" + list)
            res.locals.list = list;
        // console.log(res);
        res.render("admin/index");
        })
    })
});

至于ejs之间的传参,代码如下:

<%- include("article/list",{
    count : locals.count,
    page : locals.page,
    list : locals.list
})%>

其实之前传参已经是对的,只不过我后台数据没有获取到locals.list的值,所以在控制台一直提示Can not read property "forEach" of undefined,为此提醒广大初学者,慎入、水深、坑多。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题