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;
};

私が知っていることから、重複エラーをスローしているフィールドの名前を見つけることを目指しています。

ただし、フィールド名を取得するために.$コードが検索するエラー メッセージには no がありません。err.err.lastIndexOf('.$')

エラー文字列は

E11000 duplicate key error collection: mydatabase.mycollection index: myfield_1 dup key: { : "asd" }

文字列にno がない.$ため、文字列の先頭であるインデックス -1+2=1 が返され、ダーティ エラー メッセージ全体が送信されます。
11000 duplicate key error collection: mydatabase.mycollection index: myfield

では、なぜ を検索するの.$でしょうか。の意味はあり.$ますか?現在err.err.lastIndexOf('index: ') + 7、フィールド名のインデックスを取得するために使用しています。

.$または、他のバージョンの mongo のエラー メッセージに含まれていますか?

4

0 に答える 0