环回:如何将用户查询隔离到特定数据源?
Loopback: How to isolate a users queries to a specific datasource?
假设我有两个用户,A 和 B,ID 分别为 1 和 2。此外,假设我配置了两个数据源:X 和 Y。
对于某些给定的远程方法,我如何隔离用户 A 向数据源 X 发出的所有查询,以及 B 向 Y 发出的所有查询?例如,假设 A 想通过 API 为某些模型 运行 'find' - 我如何确保 A 获得的唯一结果是那些可通过数据源 X 访问的结果?
我不确定我是否完全理解您为什么要根据当前用户来决定数据源,但无论如何,我不确定您是否可以使用 LoopBack 做到这一点……至少,这并不容易。 LoopBack 是一个模型驱动的框架——一切都源自模型。因此,所有 API 个端点都通过一个模型(尽管您可以设置自定义路由)。每个模型都连接到一个数据源。
因此,如果我点击 /api/Widget/13
,则无法在两个数据源之间切换 findById()
调用,它将始终点击模型连接到的任何数据源。
好吧,综上所述,我看到的解决方案是:
- Create a "dispatcher" 并让该模型做适当的事情。
- 在您现有的模型上创建一个 custom remote method 并在那里进行决策,并在正确的数据源上进行
find
等。
无论哪种情况,它都不简单,也不是内置的。仅供参考,如果您需要获取数据源,您可以从 LoopBack 应用程序对象访问它:MyModel.app.datasources.ds1
假设我有两个用户,A 和 B,ID 分别为 1 和 2。此外,假设我配置了两个数据源:X 和 Y。
对于某些给定的远程方法,我如何隔离用户 A 向数据源 X 发出的所有查询,以及 B 向 Y 发出的所有查询?例如,假设 A 想通过 API 为某些模型 运行 'find' - 我如何确保 A 获得的唯一结果是那些可通过数据源 X 访问的结果?
我不确定我是否完全理解您为什么要根据当前用户来决定数据源,但无论如何,我不确定您是否可以使用 LoopBack 做到这一点……至少,这并不容易。 LoopBack 是一个模型驱动的框架——一切都源自模型。因此,所有 API 个端点都通过一个模型(尽管您可以设置自定义路由)。每个模型都连接到一个数据源。
因此,如果我点击 /api/Widget/13
,则无法在两个数据源之间切换 findById()
调用,它将始终点击模型连接到的任何数据源。
好吧,综上所述,我看到的解决方案是:
- Create a "dispatcher" 并让该模型做适当的事情。
- 在您现有的模型上创建一个 custom remote method 并在那里进行决策,并在正确的数据源上进行
find
等。
无论哪种情况,它都不简单,也不是内置的。仅供参考,如果您需要获取数据源,您可以从 LoopBack 应用程序对象访问它:MyModel.app.datasources.ds1