MEAN js 有一个用于 mongo 唯一错误的错误处理程序。这是代码:
var getUniqueErrorMessage = function(err) {
var output;
try {
var fieldName = err.err.substring(err.err.lastIndexOf('.$') + 2, err.err.lastIndexOf('_1'));
output = fieldName.charAt(0).toUpperCase() + fieldName.slice(1) + ' already exists';
} catch (ex) {
output = 'Unique field already exists';
}
return output;
};
据我所知,目的是找到引发重复错误的字段名称。
但是,.$
错误消息中没有代码err.err.lastIndexOf('.$')
查找该错误消息以获取字段名称。
错误字符串是
E11000 duplicate key error collection: mydatabase.mycollection index: myfield_1 dup key: { : "asd" }
由于字符串中没有.$
,因此返回索引-1+2=1,即字符串的开头,并发送整个脏错误消息:
11000 duplicate key error collection: mydatabase.mycollection index: myfield
那么它为什么要搜索.$
呢?有什么意义.$
吗?现在我正在使用err.err.lastIndexOf('index: ') + 7
获取字段名称的索引。
或者其他版本的 mongo 是否包含.$
在其错误消息中?