- 是一个完整的中间件和路由系统,也可以看做是一个小型的app对象
创建路由器
/*
文件夹结构
db
* db.js
moudel
userModel.js
public
login.html
register.html
server.js
router
UIRouter.js
*/
/*
* 该模块主要用于连接数据库,且判断数据库的连接状态
* */
let mongoose = require('mongoose')
mongoose.set('useCreateIndex',true) //使用一个新的索引创建器
const DB_NAME = 'atguigu' //数据库名
const PORT = 27017 //端口号
const IP = 'localhost' //主机名(ip地址)
//用于连接数据、并监测数据库连接状态的方法
function connectMongo(success,failed) {
//1.连接数据库
mongoose.connect(`mongodb://${IP}:${PORT}/${DB_NAME}`,{
useNewUrlParser: true, //使用一个新的URL解析器,用于解决一些安全性问题。
useUnifiedTopology: true //使用一个统一的新的拓扑结构。
})
//2.绑定数据库连接的监听
mongoose.connection.on('open',function (err) {
if(err){
console.log('数据库连接失败',err)
failed('connect failed')
}else{
console.log('数据库连接成功')
success()
}
})
}
module.exports = connectMongo
/*
文件夹结构
db
db.js
moudel
* userModel.js
public
login.html
register.html
server.js
router
UIRouter.js
*/
//把数据库想象成你家的别墅
let mongoose = require('mongoose')
//1.请来一个帮你看门的保安 ------ 引入模式对象
let Schema = mongoose.Schema
//2.制定进入你家的规则 -------- 创建约束对象
let usersRule = new Schema({
email:{
type:String,
required:true,
unique:true
},
nick_name:{
type:String,
required:true,
},
password:{
type:String,
required:true,
},
date:{
type:Date,
default:Date.now()
},
enable_flag:{
type:String,
default:'Y'
}
})
//3.告诉保安你的规则 ------- 创建模型对象
module.exports = mongoose.model('users',usersRule) //用于生成某个集合所对应的模型对象
/*
文件夹结构
db
db.js
moudel
userModel.js
public
login.html
register.html
server.js
router
* UIRouter.js
*/
// 引入Router
const {Router} require=('express');
// 创建一个Router实例(路由器就是一个小型的app)
let router = new Router();
// 引入path模块--node中内置的一个专门用于解决路径问题的库
let {resolve} = require('path')
router.get("/login",(request,response)=>{
let url = resolve(__dirname,'../public/login.html')
response.sendFile(url)
})
router.get('/register',(req,res)=>{
let url = resolve(__dirname,'../public/register.html')moban
response.sendFile(url)
})
module.exports = router
/*
文件夹结构
db
db.js
moudel
userModel.js
public
login.html
register.html
* server.js
router
UIRouter.js
*/
// 引入 express
const exporess = require('exporess');
// 创建app应用对象
const app = express();
// 禁止服务器返回x-powered-By,为了安全
app.disable('x-powered-by')
// 使用内置中间件暴露静态资源,不访问路由直接写文件名+后缀也能看页面
app.use(exporess.static(__dirname+'/public'))
// 连接db模块,用于连接数据库
const db = require("./db/db")
// 使用内置中间件用于解析post请求的urlencoded参数
app.use(esporess.urlencoded({extended:true}))
// 引入UI路由器
const UIRouter = require("./router/UIRouter.js")
db(()=>{
app.use(UIRouter)
app.listen(3000,(err)=>{
if(!err){console.log('服务器启用成功')}
else{console.log(err)}
})
})