我正在使用nodejs构建应用。
我创建了一个表单,我正在进行用户输入的后端验证。基本上,我有一个var,“messages”,每次遇到输入错误时,我都会将错误附加到消息中。
using namespace std;
int main()
{
cout << "Hello world!\n";
}
(我也使用指示性 - http://indicative.adonisjs.com/ - 进行错误验证。它返回一个数组错误)
我正在使用connect-flash
将错误返回给用户var messages ="";
errors.forEach(function(msgObject) {
console.log(msgObject.message);
messages += msgObject.message + "\r\n";
})
我正在使用connect-flash https://www.npmjs.com/package/connect-flash
我的问题是connect-flash忽略了换行符。即,我得到类似的东西:
我希望每条错误消息都在一个单独的行上。我似乎无法找到实现这一目标的方法。有什么想法吗?
这是一个更简单的问题版本:为什么req.flash(“errors”,“hello \ n goodbye”)返回
req.flash("error", messages);
而不是
hello goodbye
答案 0 :(得分:4)
原帖中缺少一些可能有助于您解决问题的内容。
<br />
代替\n
。req.flash
来创建通知数组?3:见下文
// Set a flash message by passing the key, followed by the value, to req.flash().
req.flash('info', 'Flash is back!')
req.flash('info', 'Another message!')
// Get an array of flash messages by passing the key to req.flash()
res.render('index', { messages: req.flash('info') });
由于我们有array
条消息,您可以迭代messages
数组以单独显示它们:
{% for message in messages %}<li>{{ message }}</li>{% endfor %}
答案 1 :(得分:0)
你是对的,我忘记了我的ejs文件,它回答了我的问题。
我基本上添加了HTML li 而不是换行符(以制作项目符号列表)
errors.forEach(function(msgObject) {
console.log(msgObject.message);
messages += "<li>" + msgObject.message + "</li>";
})
if(messages != "") {
messages = "<ul>" + messages + "</ul>";
}
然后在我的ejs文件中有这个
<div class="container">
<% if(error && error.length > 0) { %>
<div class="alert alert-danger">
<strong> <%- error %> </strong>
</div>
<% }
if(success && success.length > 0) { %>
<div class="alert alert-success">
<strong> <%= success %> </strong>
</div>
<% } %>
</div>
我替换了&lt;%= errors%&gt;与&lt;% - errors%&gt;
答案 2 :(得分:0)
其实更好..
EJS文件:
<div class="container">
<% if(error && error.length > 0 ) { %>
<div class="alert alert-danger">
<% if(error.length === 1) { %>
<strong> <%= error %> </strong>
<% } else { %>
<ul>
<% error.forEach(function(err) { %>
<li> <strong> <%= err %> </strong></li>
<% }) %>
</ul>
<% } %>
</div>
<% }
if(success && success.length > 0) { %>
<div class="alert alert-success">
<strong> <%= success %> </strong>
</div>
<% } %>
</div>
.js FILE
var messages = [];
errors.forEach(function(msgObject) {
messages.push(msgObject.message);
})
req.flash("error", messages)
答案 3 :(得分:0)
它将像这样工作:
<% if (hasMessages()) { %><% messages().forEach(function(msg){ %>
<% if(msg.message.length > 1) { %>
<div class="alert fade in alert-<%- msg.type %>" data-alert="alert">
<a class="close" data-dismiss="alert">×</a>
<% msg.message.forEach(function(innerMsg){ %>
<%- innerMsg %> <br>
<% }) %>
</div>
<% } else { %>
<div class="alert fade in alert-<%- msg.type %>" data-alert="alert">
<a class="close" data-dismiss="alert">×</a>
<%- msg.message %>
</div>
<% } %>