我更新了我的mongodb驱动程序,这迫使我使用两个完成块:. then(). catch()而不是一个回调.这样做的结果是,堆栈中的任何错误都将返回到mongodb. catch(),并可能再次级联进程.任何'done'块只应调用一次.当从单个回调迁移到then()和catch()两个块时,曾经很容易跟踪并且只被调用一次的代码失go 了简单性和连贯性.
DB.insertOne(something).then( (r) =>
{
done({success:true});
}).catch( (e) =>
{
done({success:false, message:e.code});
});
我的问题是,一旦插入命令成功完成,是否有可能将catch块delete个?我之所以这么做是因为我不希望mongodb. catch()块在不相关和不相关的事件崩溃发生时执行.我正在寻找这样的东西.
DB.insertOne(something).then( (r) =>
{
delete this.catch;//does not work
done({success:true});
}).catch( (e) =>
{
done({success:false, message:e.code});
});
另外,我需要注意的是,一般来说,我确实需要catch块.我需要catch块执行once—例如,如果insert命令返回一个错误,试图插入同一文档与相同._ id(例如).