0

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 是否包含.$在其错误消息中?

4

0 回答 0