vert.x - 在vertx中,如何提供失败操作的结果
问题描述
我正在使用服务代理在数据库中为给定的域对象创建新记录。它委托给一个 repo,然后是一个 DAO。在插入操作失败的情况下(例如,由于违反唯一约束),似乎我只能返回 Throwable 或 String。
例如
resultHandler.handle(Future.failedFuture(insertAsyncResult.cause()));
我想返回浏览器的是一个看起来像这样的 JSON 对象......
{
error: {
code: "VALIDATION_ERROR",
context: {
validationErrors: {
username: "The username is already in use"
}
}
}
}
我还希望能够从调用堆栈中的任何层返回它。例如,验证传递给服务层的参数。
我的问题是我看不到如何在失败的未来返回 JsonObject。
解决方案
您可以Future
使用带有失败代码、消息和包含额外信息的 aServiceException
来失败。int
JsonObject
如服务代理文档的错误处理部分所示:
if (!shoeSize.equals("9")) {
int errorCode = 78; // can be anything
JsonObject details = new JsonObject().put("shoeSize", shoeSize);
resultHandler.handle(ServiceException.fail(errorCode, "The shoe size must be 9!", details);
}
推荐阅读
- apache-nifi - 将两个数组转换为单个对象数组
- kotlin - Kotlin Operators ?, ?., ?: 开源实现
- python - 如何重塑这些图像以适应这个 k-means 代码?
- ansible - 强制 ansible 在库存组的每一行上应用更改
- python - 如何使用 Django 生成 6 位多个 OTP 并一次插入数据库
- java - java.lang.NoSuchMethodError: com.sun.istack.localization.LocalizableMessageFactory
- javascript - 如何在 CSS 中实现数字递增动画
- list - 推理适用于 Coq 中 nat 列表的函数
- java - 复合设计模式:实施的例子对与否?如果没有,则提供有关需要更改的建议
- flutter - 如何将文件添加到数组(列表):Flutter