我想捕获E11000 duplicate key
错误,所以我故意插入同一用户(uid是键)
const MongoError = require('mongodb-core').MongoError
async function insertUser(uid) {
try {
await userModel.create({
"uid": uid,
"create_datetime": new Date(),
})
} catch (e) {
console.log(e.constructor)
console.log(e instanceof MongoError)
}
}
使用调试工具,我可以看到e的构造函数是class MongoError extends Error
,但是e instanceof MongoError
的结果是 false ,非常奇怪!有人好的建议吗?
答案 0 :(得分:0)
我不认为这可以回答您的实际问题,但是我不认为错误会像这样被捕获。 相反,您应该检查
error.name==='MongoError' && error.code === 11000
这是Valeri Karpov(猫鼬的核心开发者之一)推荐的解决方案:https://thecodebarbarian.com/mongoose-error-handling (文章摘自2016年,但我仍然相信它是有效的)