var users = require("../controllers/users");
var express = require('express');
var router = express.Router();
//用户登录
router.post('/login',users.login);
//找回密码
router.post('/forgotpass',users.updatepass);
//添加地址
router.post('/addaddress',users.addAddress);
module.exports = router;
控制器实例
var User = require('../models/user');
var Address = require('../models/address');
var alidayu = require("../libs/alidayu");
var App = require('alidayu-node');
//获取验证码
exports.register = (req, res, next) =>{
var post = req.body;
var phone = post.phone;
if(!phone.length ==11) res.send(false);
var code = parseInt(Math.random() * 10000+1000);
var data = {
phone:String(phone),
code:String(code)
}
req.session.register = data;
alidayu.dySign(data);
res.status(200);
res.json({code:true,status:true});
}
Models实例
var mongoose = require('mongoose')
var UserSchema = require('../schemas/user');
User = mongoose.model('User', UserSchema);
module.exports = User
你的增删查改是怎么发起的?往往也是响应用户的一个路由操作吧?小项目可以直接写在路由的处理函数里。比如:
当然这样写稍微有点寒碜,像楼上所说,也可以专门建一个model 文件夹,专门封装对数据的增删查改操作:
把Item.getById 函数导出,就可以直接用了:
这样写的好处是把对数据的增删查改解耦出来;如果有其他路由需要根据id获取数据,也是直接用Item.getById 就可以了。
放文件夹models下
MVC设计
客户端请求一个路由,通过路由转发给控制器,控制器引入models和处理各种业务逻辑,models专门封装对数据的增删查改操作。
路由实例
控制器实例
Models实例
schemas 实例
目录结构大概如下

config配置文件controllers控制器libs第三方SDK 接口 封装目录modelsmodelspublic静态资源目录routes路由schemasmongoose对数据结构定义,操作方法的封装,但是我觉得是多余的,可以阉割。放进models会更好一点views视图我也是nodejs新手,如有不对之处请指出。谢谢!!