新手求助,express路由如何分离数据库操作
发布于 6 年前 作者 zhang962976642 3688 次浏览 来自 问答

目前想要分离路由里的 操作数据库的内容想了一下午,也没找到解决的方法!希望各路大神给点思路在此感激不尽

项目路径截图QQ截图20160906165214.png

ccontroller/rej.js代码:
	module.exports = function Reg(req,res,next){
	  var crypto = require('crypto');
	  var User = require('../models/user');
	  var name = req.body.username,
	  password = req.body.password,
	  password_repeat = req.body['password-repeat'],
	  email = req.body.email;
	  if( password == null && password_repeat == null ){
	  req.flash('error','密码为空,请重新输入');
	  res.redirect('/reg');
	  return;
	  };
	  if( password !== password_repeat ){
	  req.flash('error','两次密码输入不一致,请重新输入');
	  res.redirect('/reg');
	  return;
	  };
	  var md5 = crypto.createHash('md5'),
	  password = md5.update(req.body.password).digest('hex');
	User.findOne({name:name},function(err,user){
		if(user){
		req.flash('error','用户名已存在,请重新注册');
		req.redirect('/');
		return ;
		};
	  User.create({
	  name:name,
	  password:password,
	  email:email
	  },function(err,data){
	  if(err){
	  req.flash('error','注册失败,请重新注册');
	  return req.redirect('/reg');
	  };
	//写入session
	req.session.user = name;
	//注册成功
	req.flash('success','注册成功!');
	//重定向到首页
	res.redirect('/');
	});
	});
  }; 
路由routes/index.js
module.exports = function(app){
	app.get('/',function(req,res,next){
		res.render('index',{ title: '博客首页' });
	});
	app.get('/reg',function(req,res,next){
		res.render('reg',{ title: '用户注册' });
	});
	app.post('/reg',function(req,res,next){
		userReg();
	});
	app.get('/login',function(req,res,next){
		res.render('login',{ title: '用户登录' });
	});
	app.post('/login',function(req,res,next){
		//
	});
	app.get('/post',function(req,res,next){
		res.render('post',{ title: '文章发布' });
	});
	app.post('/post',function(req,res,next){
		//
	});
	app.get('/logout',function(req,res,next){
		//
	});
	app.get('/user/:username',function(req,res,next){
		res.send('您的用户名为:' );
	});
};

第一次发表,别沉,在此感谢Cnodejs的诸位机油!

10 回复

这样提示userReg is not defined 不知怎么解决,求助

不懂

app.post('/reg',function(req,res,next){
		userReg();
	});

@i5ting 我的意思是我想在请求发送 app.post()的时候,调用上面的那个reg.js但是报错,我不知怎么解决,我想做到吧路由里面的数据库操作分离成一个单独的的文件

@zhang962976642 你贴的代码都没有定义 userReg 函数。另外,我用的模式是下面这样 controller/user.js

	exports.reg = function(req, res, next) {
		//
	};

routes/index.js

	const user = require('../controller/user');
	app.post('/req', user.reg);

@IchiNiNiIchi 完美解决我的问题,太感谢了,我定义但是const user是什么意思那

@IchiNiNiIchi 看懂你的想法了 当成一个回掉

此贴终结,通过上面@IchiNiNiIchi 的方法问题已解决

这都是基础问题,node里面所有的资源都当做模块,用exports提供外部接口,用require引用。

回到顶部