我在一个集合和一个属性上使用模式验证来检查它的类型是否为整数。为了检查模式验证是否正常工作,我尝试将一个字符串放入该属性。这样做会抛出一个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
1条答案
按热度按时间jfgube3f1#
最后我找到了解决方案。由于某些原因,我的调试器为
var_dump($error);
显示了一个空值,但实际上它是正确的对象。我可以通过写入$error->getInfo()
来访问附加信息