最佳实践建议 - Loopback API
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最佳实践建议 - Loopback API相关的知识,希望对你有一定的参考价值。
我想创建一个Web服务,看起来Loopback是一个很好的起点。为了解释我的问题,我将描述情况
我有2个mysql表: 用户 公司 每个用户都拥有它的公司。它就像是公司的主用户。
我希望下一步为每家公司创建产品表: company1_Products, company2_Products, company3_Products
每家公司都有内部用户,例如: company1_Users, company2_Users, company3_Users
内部用户从相应的子域登录,例如 company1.myservice.com company2.myservice.com
对于API,我希望datasource从相应的表中获取产品。那么问题是,如何动态更改数据源?
以及如何处理用户?存储在一个表中并不好,因为内部公司用户可能在不同的公司......
也许有更好的方法来做这样的模型?
免责声明:我是LoopBack的合着者和当前维护者之一。
如何动态更改数据源?
以下StackOverflow答案描述了如何将单个模型(例如Product)附加到多个数据源的解决方案:https://stackoverflow.com/a/28327323/69868如果您为每个公司创建一个MySQL数据库而不是使用公司名称作为Product table name的前缀,则此解决方案将起作用。
为了实现您描述的内容,您可以使用模型子类。对于每个公司,定义一个新的公司特定的产品模型,该模型继承自共享的Product
模型并更改表名。
// common/models/company1-product.json
{
"name": "Company1_Product",
"base": "Product",
"mysql": {
"tableName": "company1_Products"
}
// etc.
}
您甚至可以使用app.registry.createModel()
和app.model()
API动态创建这些模型,然后运行dataSource.autoupdate
为新模型创建SQL表。
以及如何处理用户?存储在一个表中并不好,因为内部公司用户可能在不同的公司......
我想你可以使用与产品相同的方法,正如你在问题中描述的那样。
也许有更好的方法来做这样的模型?
您面临的问题是多租户。恐怕我们还没有想出一个易于使用的解决方案。如何实现多租户有很多种可能的方法。
例如,您可以为每个公司(租户)创建一个LoopBack应用程序,然后创建顶级LoopBack或Express应用程序,以将传入请求路由到适当的特定于租户的LB应用程序实例。请参阅以下存储库以获取概念验证实现:https://github.com/strongloop/loopback-multitenant-poc
以上是关于最佳实践建议 - Loopback API的主要内容,如果未能解决你的问题,请参考以下文章