0

我正在开发一个应用程序,使用户能够配置网关(如 PayPal、Authorize.net 等)来处理特定的活动,但是,每个网关都有特定的字段,这些字段彼此不同。

在创建与特定活动一起使用的自定义 GatewayConfiguration 期间,字段的值是用户唯一可以更改的内容。

我已经阅读了它,并发现这样做的一个好方法是为字段设置一个表,并为这些字段的值设置另一个表。像这样的东西:

------------
-- 网关表
------------
ID
1

--------
-- 网关字段表
--------
id、gatewayId、名称、标签
1, 1, '用户名', '网关用户名'
2, 1, '密码', '网关密码'
3, 1, 'apiurl', '网关 API URL'

------------
-- 网关配置表
----------
id, 网关 ID
1, 1

--------
-- GatewayFieldValue 表
--------
gatewayConfigurationId、fieldId、值
1, 1, '一些用户'
1, 2, 'somePass'
1, 3, 'someUrl'

网关没有太多,也不会改变太多,因为用户不能添加新的网关,只使用现有的,因此,GatewayField 也不会改变。

我这样做不是让事情复杂化吗?将所有网关放在一个表上并使用例如 JSON 字段来定义此网关接受哪些自定义字段,并在 GatewayConfiguration 上使用另一个 JSON 编码字段来设置自定义字段的值不是更好吗? 有更好的解决方案吗?

4

1 回答 1

0

我最终使用了问题中提到的类似 EVA 的结构,它并没有那么复杂,实际上使用像 Doctrine 这样的 ORM 很容易实现。

因为数据量不会以高速增长,我看不到任何性能影响,如果出现任何问题,我会将其移至 MongoDB 之类的东西。

现在它正在工作,这才是一开始真正重要的事情。

于 2014-02-14T19:26:48.410 回答