

TypeScriptを使っています。  
以下のようにユニーク制約エラーの判定を行いたいのですが、どうすればいいのでしょうか  
MongoErrorオブジェクトの型定義を見ると、message、stack、nameフィールドしかないようです。

[code]

    try{
        await db.collection("hoge")
                .insert(foo);
    }catch(e){
        if(/*eがuniqueエラーなら*/){
            //処理
        }else{
            throw e;
        }
    }
    
[/code]


CC BY-SA 3.0
2016-12-11T13:10:30.270
31087
2019-03-22T06:02:00.880
2016-12-12T07:09:53.983
19765
19765
question
javascript node.js typescript mongodb
node.jsでMongoDBのユニーク制約エラーのみをキャッチ


Unique Indexをはることで、ユニーク制約をかけることができます。  
<https://docs.mongodb.com/manual/core/index-unique/>

具体的にどのようなエラーが発生するかは、ドライバ次第かと思われます。


CC BY-SA 3.0
2017-08-29T17:42:04.207
37581
2017-08-29T17:42:04.207
20119
31087
answer


MongoDB でユニーク制約に引っかかったかどうかの判定ですが返って来るエラーコードを確認するという方法で行っていたことがあります。

ユニーク制約であれば11000かどうかを判定すればよいかと思います。  
<https://github.com/mongodb/mongo/blob/8b3694d704d4c472adba87e8fb0827372324c215/src/mongo/base/error_codes.err#L237>

以前使っていたときは Mongoose を使っていたと思うのですがその時は `err.code` で取れたと思います。


CC BY-SA 3.0
2017-10-11T09:27:17.417
38599
2017-10-11T09:34:00.033
2017-10-11T09:34:00.033
6026
6026
31087
answer