【问题标题】:NodeJS with MongoDB - Pushing project to GithubNodeJS 与 MongoDB - 将项目推送到 Github
【发布时间】:2016-05-21 08:15:32
【问题描述】:

我对 NodeJS 和 MongoDB 还很陌生,我用 Webstorm 的 MEAN 堆栈开始了一个新项目。我有一个空的基础项目,想将它提交到 Github。

我有一个名为“data”的目录,用于项目的 MongoDB 部分。只需使用 MongoDB 设置此目录即可加载 300mb 的文件。 gitignore 这个数据目录安全吗? Github 不喜欢大文件。

MongoDB 生成的文件图片

【问题讨论】:

  • 这 300mb 的文件是什么?如果是空项目。通常,在我的节点项目中,我只是推送我的 mongoDb 数据库的转储。
  • @ceadreak 老实说,我不知道所有这些文件是什么......它主要是 .wt 文件、.lock、.turtle......我会发布图片
  • 我认为这些文件不存在......但在用于所有项目的外部目录中。你是如何安装 mongoDb 的?注意:不要将你的 node_modules 目录推送到 github。
  • @ceadreak 我忽略了一个 node_modules 目录,它们都是通过 npm --save 安装的。我想我可能误解了我正在关注的 mongoDB 教程。
  • 好的,卸载 mongodb 模块并使用 npm 全局重新安装它,并使用 -g 选项。它会成功的

标签: node.js git mongodb github


【解决方案1】:

您可以放心地忽略 mongodb 数据文件。

通常数据文件不包含在项目结构中。您只需要在您的开发机器上使用这些文件,这样您就可以在本地运行您的应用程序。将应用程序部署到生产环境后,您将连接到不同的数据库,如果您在副本集中运行多个节点,则该数据库可能是完全独立的计算机或多个计算机。

您还可以将 node_modules 目录添加到您的.gitignore,因为您通常会在部署过程中安装这些目录。

Github 为各种语言提供了一些示例 .gitignore 文件 - 您可能会发现查看 nodejs one 很有用

【讨论】:

  • 正是我使用的那个 :-) 谢谢你的回答。
【解决方案2】:

gitignore这个数据目录安全吗

Yes it is。 gitignore 这样的内容也是一个good practice,因为版本控制没有意义。特别是当 mongo 运行时,其中一些文件被锁定以供 mongod 独占访问,并且摆弄它可能会损坏您的数据库。

您可以对mongodump 的压缩输出进行版本控制,这听起来并不疯狂。可以使用Git hookspre-commitpost-commit触发mongodump,然后压缩备份再版本。

还有一些在线服务可以让您自动备份您的 mongodb 实例,例如 MongoDB Monitoring Service 和其他您可以 google 的服务。

我正在处理一个Node.js 项目,我使用MongoDBNeo4j 数据库。我最近提出了neo4j-shell-tools 的一个问题,我希望能够导出我的Neo4j 数据库的图形结构,并且我可以轻松地对其进行版本化,所以在项目结束时我回头看看Neo4j数据库从无到有演变为功能齐全的数据库。如果我不得不回滚到以前的 Neo4j 数据库结构,那么我会下载版本化的图结构并将其恢复到一个空数据库中。

MongoDB 和 Neo4j 的数据库都不在我的工作区中,它们位于默认位置。我有以下 .gitignore 文件,以防您想重用它并包含数据目录的规则(就像我为节点模块所做的那样)

# Specifies intentionally untracked files to ignore when using Git
# http://git-scm.com/docs/gitignore

node_modules/
platforms/
plugins/
hooks/
public/jquery
photos/


# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so

# Packages #
############
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip

# Logs and databases #
######################
*.log
*.sql
*.sqlite

# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

我还决定不进行版本控制node_modules,是否这样做还有待商榷。

【讨论】:

    【解决方案3】:

    供您参考,您可以将数据包与 Github 一起使用。

    https://github.com/pricing

    但最好的解决方案是将您的数据存储在 Compose.io(免费)或其他云提供商...

    【讨论】:

      【解决方案4】:

      您应该使用 npm 全局安装 mongodb 模块。

      https://docs.npmjs.com/getting-started/installing-npm-packages-globally

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-21
        • 1970-01-01
        • 2021-10-24
        • 1970-01-01
        • 2014-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多