我有一个跟踪重定向的模型:
var Redirect = new keystone.List('Redirect', {
});
Redirect.add({
from: { type: String, required: true, initial: true, unique: true },
to: { type: String, required: true, initial: true },
status: { type: Types.Select, options: [{value: 302, label: 'Temporary'},{value: 301, label: 'Permanent'}], default: 302, numeric: true, initial: true }
});
独特的约束有效,我可以创建新的模型,只要它没有一个独特的'来自'但当我创建一个非独特的' ;从'我在服务器控制台中收到错误,但前端什么也没做。
将更改保存到重定向5664d5860d7c730f09880de1时出错:{ [MongoError:insertDocument ::由:: 11000 E11000重复键引起 错误索引:keystone.redirects。$ from_1 dup key:{:" / herp" }]
名称:' MongoError',代码:11000,错误:' insertDocument ::由 :: 11000 E11000重复键错误索引:keystone.redirects。$ from_1 dup key:{:" / herp" }' }
我是否需要另外设置才能让错误显示在前端,以便用户知道出了什么问题?
答案 0 :(得分:0)
您必须在服务器逻辑中捕获该错误,并向访问者显示更友好的Flash消息。至少数据库错误消息描述了问题duplicate key error ...
exports.flashMessages = function(req, res, next) {
var flashMessages = {
error: req.flash('error')
};
res.locals.messages = _.any(flashMessages,
function(msgs) { return msgs.length }) ? flashMessages
: false;
next();
};
并自定义消息,确保传递的对象包含模板的相应字段
您可以通过添加req.flash
req.flash(
'success',
'Your job has been submitted. Allow 30 days for approval.'
);
要在adminUI中显示flash错误,请创建一个错误对象并将其传回next
回调,如此
Redirect.schema.pre('save', function(next) {
if (saveFailure) {
var err = new Error('MongoDB is barfing on this');
next(err);
}
}