Node.js 如果在多个项目中使用数据库模型文件夹,如何将其集中化?
我们有3个不同的RESTapis,即A、B和C,它们都访问相同的Node.js 如果在多个项目中使用数据库模型文件夹,如何将其集中化?,node.js,rest,express,sequelize.js,bitbucket,Node.js,Rest,Express,Sequelize.js,Bitbucket,我们有3个不同的RESTapis,即A、B和C,它们都访问相同的MySQL数据库。 我们的堆栈是NodeJS+ExpressJS+sequalizejs ORM+MySQL 现在,如果我想创建一个新的db模型,我需要在api a和 与正在使用APIB和C的其他开发人员进行沟通,以便将新模型复制并粘贴到他们项目的models文件夹中 这是非常低效的,在这个过程中有很多错误 因此,我们是否可以通过bitBucket中的新回购来自动完成这项任务,而不是手动完成? 我们的想法是在bitBucket中创建
MySQL
数据库。
我们的堆栈是NodeJS+ExpressJS+sequalizejs ORM+MySQL
现在,如果我想创建一个新的db模型,我需要在api a和
与正在使用APIB和C的其他开发人员进行沟通,以便将新模型复制并粘贴到他们项目的models文件夹中
这是非常低效的,在这个过程中有很多错误
因此,我们是否可以通过bitBucket中的新回购来自动完成这项任务,而不是手动完成?
我们的想法是在bitBucket中创建一个回购协议,以及如何在所有3个项目中引用模型文件夹,而不是在每个项目中保留模型文件夹
如何使用NodeJS、ExpressJS和BitBucket实现这一点?我假设通过API A、B和C,您在这里指的是完全不同的项目。如果是这样的话,我可以建议您使用GIT子模块。但由于广泛使用了子模块,我建议只有在不可避免的情况下才使用它 我通常从事的项目结构:
.(Git Root)
├── logs
├── resources
├── schema
│ └── <different-entities>
├── src
│ ├── config
│ ├── controllers
│ ├── jobs
│ │ ├── emails
│ │ └── notifications
│ ├── locales
│ ├── middlewares
│ ├── migrations
│ ├── models (You need to have a git submodule here)
│ ├── public
│ ├── seeders
│ ├── services
│ │ ├── entities
│ │ └── factories
│ ├── transformers
│ ├── types
│ ├── types-override
│ ├── util
│ └── validators
│ ├── keywords
│ └── <different-entities>
├── storage
│ ├── <date>
├── stubs
└── temp_files
(Git根目录)
├── 日志
├── 资源
├── 模式
│ └──
├── src
│ ├── 配置
│ ├── 控制器
│ ├── 工作
│ │ ├── 电子邮件
│ │ └── 通知
│ ├── 地区
│ ├── 中间件
│ ├── 迁移
│ ├── 模型(这里需要一个git子模块)
│ ├── 公众的
│ ├── 播种机
│ ├── 服务
│ │ ├── 实体
│ │ └── 工厂
│ ├── 变形金刚
│ ├── 类型
│ ├── 类型覆盖
│ ├── 利用率
│ └── 验证器
│ ├── 关键词
│ └──
├── 存储
│ ├──
├── 存根
└── 临时文件
这听起来很简单,但请记住以下几点:
- 如果您现有的项目在git历史记录中有
目录,则无法在该目录上创建子模块(至少不是一种简单的方法。我这样做的方式是将models
重命名为models
)共享模型
- 现在将有2个git存储库: A.包含所有模型文件的git存储库(您永远不会在IDE中打开此git repo.) B.项目的主要git存储库 因此,在大多数情况下,都会出现不必要的合并冲突 合并主存储库中的任何分支。因为主存储库只是跟踪提交散列,所以此时您的模型存储库应该处于打开状态。任何新提交(无论是否是快进提交都将被视为合并冲突)
- 第三个缺点是最累人的:假设您只需在模型文件中进行更改,而在项目更改中不做任何其他更改。(是的,这种情况不常见,但可能发生。例如,在状态键中添加另一个枚举值)。要实现这一点,您必须进行两次提交,首先在模型存储库中进行一次提交,该存储库将存储实际更改,然后在主存储库中进行一次提交,该存储库将存储新的提交哈希,并在两个不同的存储库上推送两次提交
-models-
,例如facebook models节点
)git子模块添加src/共享模型
src/模型
导入到src/共享模型
GIT官方子模块:我忘了提一下,子模块在Webstorm中工作得很有魅力。。你只需要打开主项目。。有关子模块的更多详细信息,请参见此处: