关于 MERN 文件夹结构以及在何处定义 MongoDB 连接的建议
Posted
技术标签:
【中文标题】关于 MERN 文件夹结构以及在何处定义 MongoDB 连接的建议【英文标题】:Recommendations on MERN folder structure and where to define MongoDB connection 【发布时间】:2017-10-29 04:02:40 【问题描述】:我不熟悉使用 MERN 创建全栈应用程序(使用 React 而不是 Angular,因为我熟悉 React)。我一直在看教程来学习如何将我的服务器端代码(express/mongo)分开,因为我最初在我的 server.js 文件中定义了我的 Express 路由、MongoDB 连接和 API 请求(只是为了让一些工作)。
目前,我的文件夹结构以及我定义路由和数据库的方式如下:
-
routes.js 包括我在我的路由文件夹中定义的所有路由和
导出要在 server.js 中使用的路由函数
使用 express.Router 为路由文件夹中的模型(即用户)定义特定路由。我还在此处包含 MongoDB 模型以执行任何必要的操作(查找、插入等)
在 userModel.js 中定义 mongo 架构
此时,我不确定在哪里连接我的 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
【问题讨论】:
【参考方案1】:在单独的文件中添加 mongoose 连接。然后在需要链接到数据库的任何地方使用let schema = require('_path_to_file_')
链接该连接。
【讨论】:
【参考方案2】:我经常看到以下 dir 结构 w.r.t 全栈 JS 应用程序
根 客户 服务器 常见同样,我看到一个修改后的FHS 方法实现类似于以下
根 src(包含 react/redux 目录 - actions、comp、cont、reducers、store 等) bin(编译后的 dist) 等(“可编辑文本配置”或“扩展工具箱”) 公开 package.json、自述文件等【讨论】:
【参考方案3】:使用 MongoDB、Express、Node JS 构建 API 的文件夹结构
控制器 /* user.controller.js 型号 /* user.model.js 路线 /* user.route.js 配置 /* 数据库.js/* server.js /*package.json
//database.js
module.exports =
url:'mongodb://localhost:27017/db_name'
【讨论】:
以上是关于关于 MERN 文件夹结构以及在何处定义 MongoDB 连接的建议的主要内容,如果未能解决你的问题,请参考以下文章