【发布时间】:2014-05-07 06:38:45
【问题描述】:
我是 nodejs 以及 mvc 模式的新手。我正在尝试创建一个使用 express、mongoose、ejs、passport 的应用程序。我不确定在哪里放置我的数据库查询。目前我已经开始将它们添加到 controllers/routes.js 文件中。这是我目前创建的大致文件夹结构:
|-- config
-- database.js // Exports just the db url
-- passport.js // Exports Passport local auth strategies (includes db connections)
|-- controllers
-- routes.js // Routes
|-- models
-- user.js // Exports mongoose user schema
|-- public
|-- views
-- home.ejs // Home ejs page
-- signup.ejs // Sign up page
-- user.ejs // User profile page
app.js // Express configure and server start etc...
我遵循了护照教程,但 config/passport.js 文件中存在唯一的数据库连接。目前我已经在 routes.js 文件中放置了一个连接,但是从我所阅读的内容来看,这些应该放在模型文件夹中。这是我在 routes.js 文件中的代码:
//controllers/routes.js
//USER PROFILE ROUTE
app.get('/:user', function(req, res) {
var userRoute = req.params.user;
checkUserRoute(userRoute, res)
});
function checkUserRoute(userRoute, res){
var User = require('../models/user');
User.findOne({ 'local.email' : userRoute }, function(err, user) {
if (err){
return done(err);
}
if (user) {
res.render('user.ejs', { title: userRoute, message: '' });
} else {
res.send(404);
}
});
}
我(初学者)对 MVC 的理解是它会放在模型文件夹中,但是为什么在我为 Passport 遵循的教程中是 config 文件夹中的数据库连接?
这是我用于应用程序的护照身份验证部分的教程的文件夹结构:
http://scotch.io/tutorials/javascript/easy-node-authentication-setup-and-local#application-structure
即使是默认的快速应用安装也令人困惑。默认的 express 应用程序有一个名为 routes 的文件夹,然后它将 app.get 代码放在 app.js 文件中,该文件位于根文件夹中,而不是在 routes(controllers) 文件夹中。
在我的 controllers/routes.js 文件中放置数据库连接是对还是错?如果写错了应该放在哪里,如何调用访问mongo数据库的函数?
mongoose 用户架构代码是否在正确位置?
config/passport.js 文件是否应该包含 mongoose db 连接?
【问题讨论】:
标签: node.js model-view-controller express mongoose passport.js