Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如果在多个项目中使用数据库模型文件夹,如何将其集中化?_Node.js_Rest_Express_Sequelize.js_Bitbucket - Fatal编程技术网

Node.js 如果在多个项目中使用数据库模型文件夹,如何将其集中化?

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中创建

我们有3个不同的RESTapis,即A、B和C,它们都访问相同的
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存储库

    因此,在大多数情况下,都会出现不必要的合并冲突 合并主存储库中的任何分支。因为主存储库只是跟踪提交散列,所以此时您的模型存储库应该处于打开状态。任何新提交(无论是否是快进提交都将被视为合并冲突)

  • 第三个缺点是最累人的:假设您只需在模型文件中进行更改,而在项目更改中不做任何其他更改。(是的,这种情况不常见,但可能发生。例如,在状态键中添加另一个枚举值)。要实现这一点,您必须进行两次提交,首先在模型存储库中进行一次提交,该存储库将存储实际更改,然后在主存储库中进行一次提交,该存储库将存储新的提交哈希,并在两个不同的存储库上推送两次提交
如果我还没有失去你&你觉得这是适合你的用例的正确方法(但是我想不出更好的方法了)

  • 将完整的模型目录复制到一个新位置(比如桌面)
  • git init inside~/Desktop/models
  • 将其推到单独的bitbucket回购上。(我通常将其命名为
    -models-
    ,例如
    facebook models节点
  • 回到你的主要项目A
  • 删除那里的模型目录
  • 运行:
    git子模块添加src/共享模型
  • 将模型从
    src/模型
    导入到
    src/共享模型
  • 对其他项目也重复步骤5-7

  • GIT官方子模块:

    我忘了提一下,子模块在Webstorm中工作得很有魅力。。你只需要打开主项目。。有关子模块的更多详细信息,请参见此处: