0

req.flash()我得到对象{ error: ['Invalid username'] }。我使用动态助手将它传递给用 Jade 编写的模板。但是当我这样做时

for type in flashMessages
    p #{type}

在模板中,我收到消息 ('Invalid username') 而不是变量type中的类型。

你能给我一个建议如何获得类型吗?我想打印这样的闪存消息:

for type in flashMessages
    each message in flashMessages[type]
        p.alert-#{type} #{message}

谢谢

4

2 回答 2

3

req.flash()旨在为您提供所有消息的平面列表,或特定类型的所有消息的平面列表。无论哪种方式,消息对象本身都不会告诉您类型,因为假设您已经知道这一点。但是,鉴于req.flash()有 支持req.session.flash,您可以推出自己的功能。

首先,您需要准备自己的包含所需信息的消息列表,以便您可以将其传递给您的视图。例如,

var messagesByType = req.session.flash || {},
    allMessages = [];
Object.keys(messagesByType).forEach(function(type) {
    var messages = messagesByType[type] || [];
    messages.forEach(function(msg) {
        allMessages.push({ type: type, text: msg });
    });
});
req.session.flash = {};

其次,确保您allMessages在模板中可用。例如,

res.render('some-view', { messages: allMessages });

这应该给你一些你可以在你的视图中迭代的东西,如下所示:

for message in messages
    p(class='alert-#{message.type}') #{message.text}
于 2012-05-14T17:48:18.297 回答
1

您尝试打印的“类型”值是指什么?

flash() 值没有任何“类型”属性。

如果“类型”是指“错误”,而“消息”是指“无效的用户名”:

错误是一个对象属性。要列出它们,您必须使用

var keys = Object.keys(myObject);
于 2012-05-14T17:47:29.783 回答