2017-11-18 213 views
1

我是新来表达和帕格所以原谅我,如果这是一个noob问题,但如何将我在一个函数中创建的数组传递给路线,将呈现帕格模板。我最终想循环数组并将其呈现为表格。传递数组到Jade /帕格路线在Express

我的代码 - 首先我使用lodash map方法从一个文件接收的数据中创建数组。 *编辑 - 添加完整的代码结构 -

fs.readFile(file, 'utf8', function (err, data) { 
    if (err) { 
    console.log('Error: ' + err); 
    return; 
    } 

    var data = JSON.parse(data); 

    var newEventList = data.events.map(events => ({ 
    id: events.id , 
    name: events.name , 
    venue: events.place.name , 
    address: events.place.location.street + " " + 
    events.place.location.city + " " + events.place.location.zip , 
    coverPicture: events.coverPicture , 
    description: events.description , 
    startTime: events.startTime , 
    endTime: events.endTime 
    })); 
}); 

所以,现在我有一个名为newEventList的对象数组。

我的哈巴狗路线

app.get('/', function (req, res, newEventList) { 
res.render('index', { title: 'Hey', message: 'Hello there!', 
    newEventList 
}) 
}) 

我添加标题和消息来测试我的哈巴狗模板。 在我的帕格模板我有

h1= message 
p= newEventList 

但在呈现我弄了半天错误信息的段落 -

function next(err) { // signal to exit route if (err && err === 'route') { return done(); } // signal to exit router if (err && err === 'router') { return done(err) } var layer = stack[idx++]; if (!layer) { return done(err); } if (layer.method && layer.method !== method) { return next(err); } if (err) { layer.handle_error(err, req, res, next); } else { layer.handle_request(req, res, next); } } 

什么我做错了吗?

回答

2

从您的路线定义的回调中删除或重命名newEventList作为您的第三个参数。

在您的示例中,newEventList正在分配给done/next回调。因此,您会看到在您的段落中正在打印的功能。

var newEventList = // Whatever value; 

app.get('/', function (req, res) { 
    res.render('index', { title: 'Hey', message: 'Hello there!', 
    newEventList 
    }) 
}) 
+0

谢谢,但我没有提到data.events.map函数在另一个函数内,所以在实现中,我想我也有一个变量范围问题。所以在这个函数中,我想我必须返回newEventsList数组,以使其可用于其他函数,道歉我想我可能需要重新写这个问题。我将编辑代码以反映这... –

+0

这确实回答了我原来的问题,所以会接受它。谢谢 –