【问题标题】:Breeze.js: Returning empty set when requested database does not existBreeze.js:请求的数据库不存在时返回空集
【发布时间】:2016-01-20 08:00:34
【问题描述】:

目前我们正在使用 Breeze.js 和 Angular 来开发我们的应用程序。由于一些持续存在的遗留问题,我们有两个数据库(“Kenya”和“Rwanda”)目前无法合并,但具有相同的架构和元数据。大多数时候,客户端知道要访问哪个数据库并通过 .withParameters() 函数或 .saveOptions() 函数传递请求。有时我们想从两个数据库请求相同的查询(例如,如果我们请求所有可用国家的列表),我们使用客户端上的 EntityManager 包装器来管理它并从每个数据库请求相同的查询。这是通过自定义 EFContextProvider 实现的,它使用返回的数据来确定适当的数据库并在 CreateContext() 中创建适当的上下文。

更复杂的是,在某些情况下,一个或另一个数据库将不存在(这些是通过过滤复制创建的本地部署),但客户端不会知道这一点。因此,在查询所有国家的列表时,它会发出两个请求,其中一个会因为上下文无法正确实例化而导致失败。

这很容易在服务器上检测到。我想做的是检测请求的上下文是否可用,如果没有,则返回 200 响应和一个空集。

我可以在 Breeze DBContextProvider CreateContext() 方法中检测到这一点,但无法弄清楚如何使请求优雅地回退到空集响应。

谢谢

【问题讨论】:

    标签: breeze


    【解决方案1】:

    不完全是我想要的,但它可能更有意义,因为大部分工作都是在客户端完成的:

    我没有尝试更改控制器,而是向 C# 控制器操作添加了一个 getAvailableDatabases,并使用它来确定我将从客户端查询哪些数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 2020-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      相关资源
      最近更新 更多