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

查看:203
本文介绍了node.js - node+express+ejs中传参问题,在传参一直提示参数未定义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

大概描述一下结构:

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

三者之间的联系,想通过admin.js获取到数据库中的所有文章,通过locals.list传递到list.ejs中,然后把list.ejs渲染到index.ejs局部。
index.ejs

以下是通过include引入获取后台数据列表

在网上查到ejs 2.0+可以通过<%- inclund("article/list",{list:locals.list})传参,可是在list.ejs里并没接收到参数。控制台依然报错
list.ejs

admin.js


下面是错误提示

解决方案

经过不懈的努力,目前问题已经解决,问题主要出现在数据逻辑上,因为我是需要在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,为此提醒广大初学者,慎入、水深、坑多。。。

这篇关于node.js - node+express+ejs中传参问题,在传参一直提示参数未定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆