Express 关于MERN文件夹结构和在何处定义MongoDB连接的建议

Express 关于MERN文件夹结构和在何处定义MongoDB连接的建议,express,mongoose,mern,Express,Mongoose,Mern,我对使用MERN创建一个完整的堆栈应用程序很陌生(使用React而不是Angular,因为我熟悉React)。我一直在看教程,以了解如何分离服务器端代码(express/mongo),因为我最初在server.js文件中定义了express路由、MongoDB连接和API请求(只是为了让某些东西正常工作) 目前,我的文件夹结构以及定义路由和数据库的方式如下: routes.js包括我在routes文件夹中定义的所有路由,以及 导出要在server.js中使用的路由函数 使用express.Rou

我对使用MERN创建一个完整的堆栈应用程序很陌生(使用React而不是Angular,因为我熟悉React)。我一直在看教程,以了解如何分离服务器端代码(express/mongo),因为我最初在server.js文件中定义了express路由、MongoDB连接和API请求(只是为了让某些东西正常工作)

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

  • routes.js包括我在routes文件夹中定义的所有路由,以及 导出要在server.js中使用的路由函数
  • 使用express.Router在routes文件夹中为模型(即用户)定义特定路由。我还将MongoDB模型包括在这里,以执行任何必要的操作(查找、插入等)
  • 在userModel.js中定义mongo模式
  • 此时,我不确定我的MongoDB连接到哪里。以前,我连接到server.js中的DB,但是如果我想使用我的模型来查询我的DB,我是否在使用模型的每个路由文件中定义我的连接?有没有办法让我只调用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
    

    在单独的文件中添加mongoose连接。然后使用
    let schema=require(“\u path\u to\u file\”)
    链接到需要链接到数据库的任何位置。

    我经常看到下面的dir结构w.r.t full stack JS apps

      • 客户
      • 服务器
      • 普通的
    同样,我也看到了一种改进的方法,其实现方式与下面的类似

      • src(包含react/redux指令-操作、组件、控制、还原剂、存储等)
      • bin(编译区)
      • etc(“可编辑文本配置”或“扩展工具箱”)
      • 公开的
      • package.json、自述文件等

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

    • 控制器 /*user.controller.js
    • 模型 /*user.model.js
    • 路线 /*user.route.js
    • 配置 /*database.js
    /*server.js /*package.json

    //database.js
    module.exports={
    网址:'mongodb://localhost:27017/db_name'
    }