关于MERN文件夹结构的建议以及定义MongoDB连接的位置

时间:2017-05-28 21:59:38

标签: express mongoose mern

我不熟悉使用MERN创建一个完整的堆栈应用程序(使用React而不是Angular,因为我熟悉React)。我一直在寻找教程来学习如何将我的服务器端代码(express / mongo)分开,因为我最初有我的Express路由,MongoDB连接和我在server.js文件中定义的API请求(只是为了得到)工作的东西)。

目前,我的文件夹结构和我定义路由和数据库的方式如下:

  1. routes.js包含我在路线文件夹中定义的所有路线 导出要在server.js中使用的路由函数
  2. 使用express.Router为路径文件夹中的模型(即用户)定义特定路径。我还在这里包含MongoDB模型以执行任何必要的操作(查找,插入等)
  3. 在userModel.js中定义mongo架构
  4. 此时,我不知道在哪里连接我的MongoDB。以前,我连接到server.js中的数据库,但如果我想使用我的模型查询我的数据库,我是否在每个使用模型的路径文件中定义我的连接?有没有办法让我只调用一次mongoose.connect并确保我始终连接到我的数据库?

    // Connect to mongodb
    mongoose.connect(process.env.MONGOLAB_URI || db_url)
    

    userRoutes.js

    -root folder
        -public
        -src
            -server
                -db
                -models
                    -userModel.js
                -routes
                    -userRoutes.js
                -routes.js
        -server.js
    

3 个答案:

答案 0 :(得分:1)

在单独的文件中添加mongoose连接。然后使用let schema = require('_path_to_file_')链接该连接,无论您需要链接到数据库。

答案 1 :(得分:1)

我经常看到以下dir结构w.r.t全栈JS应用程序

    • 客户端
    • 服务器
    • 共同

同样地,我看到实现了类似于以下

的修改后的FHS方法
    • src(包含react / redux dirs - actions,comp,cont,redurs,store等)
    • bin(编译dist)
    • etc(“可编辑文本配置”或“扩展工具箱”)
    • 公共
    • package.json,readme等

答案 2 :(得分:0)

使用MongoDB,Express,Node JS构建API的文件夹结构

  • 控制器 / * user.controller.js
  • 型号 / * user.model.js
  • 路线 / * user.route.js
  • 配置 / * database.js

/ * server.js /*package.json

//database.js

  module.exports = {
          url:'mongodb://localhost:27017/db_name'
          }