从req.flash()
我得到了对象{ error: ['Invalid username'] }
。我将它传递给使用动态帮助器在Jade中编写的模板。但是当我做的时候
for type in flashMessages
p #{type}
在模板中我收到了消息('用户名无效'),而不是变量 type 中的类型。
你能给我一个如何获得这种类型的建议吗?我想打印这样的flash消息:
for type in flashMessages
each message in flashMessages[type]
p.alert-#{type} #{message}
谢谢
答案 0 :(得分: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}
答案 1 :(得分:1)
您尝试打印的“类型”值是指什么?
flash()值没有任何'type'属性。
如果通过'type'表示'错误',则通过'message'引用'无效的用户名':
error是一个Object属性。要列出它们,您必须使用
var keys = Object.keys(myObject);