php mongodb在BulkWriteException上获取其他信息

vc9ivgsu  于 2022-12-10  发布在  PHP
关注(0)|答案(1)|浏览(154)

我在一个集合和一个属性上使用模式验证来检查它的类型是否为整数。为了检查模式验证是否正常工作,我尝试将一个字符串放入该属性。这样做会抛出一个MongoDB\Driver\Exception\BulkWriteException类型的异常,并显示以下消息:Document failed validation
一切正常,但根据mongodb文档:https://www.mongodb.com/docs/manual/core/schema-validation/specify-json-schema/#std-label-schema-validation-json
有可能获得额外的信息,从而获得触发此异常的原因(失败验证的描述属性)。我不知道如何从BulkWriteException中获得这些额外的信息。我使用的代码如下:

try {
    doSomething('string');//force validation to failed
} catch (MongoDB\Driver\Exception\BulkWriteException $ex) {
    echo $ex->getMessage();// shows: Document failed validation
    var_dump($ex->getWriteResult()->getServer()->getInfo());// shows server info but not the error info
    foreach ($ex->getWriteResult()->getWriteErrors() as $error) {
        var_dump($error);// it is empty
    }
}

ps:我正在使用这个存储库中的mongodb:https://github.com/mongodb/mongo-php-library

jfgube3f

jfgube3f1#

最后我找到了解决方案。由于某些原因,我的调试器为var_dump($error);显示了一个空值,但实际上它是正确的对象。我可以通过写入$error->getInfo()来访问附加信息

相关问题