1.使用脚手架创建搭建后台
2.尝试修改端口
在bin目录下的www.js文件里面,把3000改为4000
3.在router的index文件里面注册路由
//注册路由:用户注册
router.post('/register',(request,response)=>{
console.log("123123")
//1.获取请求参数
//post请求是在body里面
//get请求是在param或query里面
const {username ,password}=request.body
//2.处理
if (username === 'admin'){//注册失败
//返回响应数据(失败)
response.send({code:1,msg:'此用户已存在'})
}else {//注册成功
//返回响应数据(成功)
response.send({code:0,data:{id:'abc123',username,password}})
}
})
需要注意的是,每次路由文件的更改需要我们重新启动路由器(这不是我们想要的,在后面我们会推荐一个方法解决这个问题)
4.postman的使用
前端人员会存在拿不到服务器数据的问题,这个时候需要判断是不是服务器端的问题,我们就可以使用postman来检测接口。
需要注意的就是以上红框圈住的地方。
5.后台应用自动重运行(上文提到的问题)
问题: 每次修改后台应用代码, 需要重新运行命令修改才生效
下载: npm install --save-dev nodemon
配置: 把node改为nodemon
测试: 修改完代码,按下 ctrl + S就可以了
6.mongoose的使用
mongodb:
数据库database里面存放集合collection,集合collection里面存放文档document,文档是最小的操作单位
mongoose的内容:
Schema:约束文档解耦股
Model:相当于collection,作为集合中所有文档的表示
Document:相当于具体文档
通过mongoose连接mongodb:
第一步:必须先安装mongoose包:
npm install mongoose
第二步:引入
第三步:连接数据库
第四步:断开连接
mongoose.disconnect()
//引入blueimp-md5,用于对密码进行md5加密
const md5 = require('blueimp-md5')
//第一步引入mongoose
const mongoose=require('mongoose')
//第二步,连接数据库(地址里面mongodb是协议名称,localhost:27017是域名端口号,guigutest是数据库的名字)
mongoose.connect('mongodb://localhost:27017/guigutest')
//第三步,获取连接对象
const conn=mongoose.connection
//第四步,绑定完成监听(提示连接成功)
conn.on('connected',function () {
console.log("数据库连接成功")
})
// Schema(描述文档结构),相当于定义了一个表
const userSchema = mongoose.Schema({
username: {type: String, required: true,default: 'admin'}, // 用户名
password: {type: String, required: true}, // 密码
type: {type: String, required: true}, // 用户类型
})
// 通过约束来映射集合,定义 Model相当于一个类,这个类可以可以操作集合
const UserModel = mongoose.model('user', userSchema) // 集合名: users
// 通过 Model 实例的 save()添加数据
function testSave() {
const user = {
username: '维克特利123',
password: md5('1234'),
type: 'laoban',
}
//第一种方法,不推荐
/* const userModel = new UserModel(user)
userModel.save(function (err, user) {// 保存到数据库
console.log('save', err, user)
})*/
//第二种方法推荐
UserModel.create([user],(err, user)=>{
console.log('save', err, user)
})
}
//testSave()
// 通过 Model 的 find()/findOne()查询多个或一个数据
function testFind() {
// 查找多个,如果不指定查找对象的条件,则默认查找全部
UserModel.find(function (err, users) {
// 如果有匹配返回的是一个[user, user..], 如果没有一个匹配的返回[]
console.log('find() ', err, users)
})
// 查找一个
/*
UserModel.find({},()=>{})//根据条件查找,如果没有条件,则查找全部
UserModel.findById({},()=>{})//根据id来查找
{}里面可以方多个参数
总共有四个参数[conditions][projection][option][callback]
projection表示需要获取的字段
"name age -_id"加负号表示不想要这个数据
option查询选项
{skip:3,limit:1}表示跳过前面三个,显示一个
*/
UserModel.findOne({_id: '609dff1b242c2e33c4067c38'}, function (err, user) {
// 如果 有匹配返回的是一个 user, 如果没有一个匹配的返回 null
console.log('findOne() ', err, user)
})
}
// testFind()
//通过 Model 的 findByIdAndUpdate()更新某个数据
function testUpdate() {
//第一个参数是条件查询参数,第二个是修改参数的,第三个是回调函数
UserModel.findByIdAndUpdate({_id: '609dff1b242c2e33c4067c38'}, {username: 'yyy'},
function (err, user) {
console.log('findByIdAndUpdate()', err, user)
})
/* UserModel.updateMany()
UserModel.updateOne()*/
}
// testUpdate()
// 通过 Model 的 remove()删除匹配的数据
function testDelete() {
UserModel.remove({_id: '609dff1b242c2e33c4067c38'}, function (err, result) {
console.log('remove()', err, result)
})
/*UserModel.deleteMany()
UserModel.deleteOne()*/
}
// testDelete()
注意:每个IDE会有方便使用mongodb的插件!!!
最后我们需要暴露model
export.UserModel=UserModel