1.使用express生成器搭建项目
2.搭建三层架构
- 为了更好的组织我们的代码结构
1.表示层(public+router)
2.业务逻辑层(service)
3.数据访问层(持久层)(dao)
连接数据库(mongoose)- dbUtil.js
// 公共代码
var mongoose = require('mongoose');
mongoose.connect("mongodb://127.0.0.1:27017/eggcms", { useNewUrlParser: true, useUnifiedTopology: true })
// 监听是否连接成功
mongoose.connection.on("connected", function() {
console.log("连接数据库成功");
})
设置Schema - userModel.js
var mongoose = require('mongoose');
let userSchema = new mongoose.Schema({
username: String,
password: String
})
const userModel = mongoose.model('User', userSchema, 'user')
module.exports = userModel
数据访问层(持久层)(dao)- userDao.js
// 设计一个函数,用来获取数据
async function findUser(data) {
// mongoose连接数据库API方法都是异步方法
const user = await userModel.find(data);
return user;
}
module.exports = findUser
业务逻辑层(service)- userService.js
const {findUser, addUser} = require('../dao/userDao')
async function login(data) {
const res = await findUser(data);
// 判断是否查找到
if (res.length > 0) {
return {success: res, msg: '登录成功'}
} else {
return {success: false, msg: '登录失败'}
}
}
module.exports = login
表示层(public+router)- user.js
var express = require('express');
var router = express.Router();
var { login } = require('../service/userService')
/* GET users listing. */
router.get('/login', async function (req, res, next) {
// 获取客户端传递过来的参数
// 获取消息体里的信息:post: req.body get: req.query (express封装好的)
const { username, password } = req.query;
const val = await login({ username, password });
res.send(val)
});
module.exports = router;