使用代码来操作数据库
使用mongodb实现注册
- 在终端安装express npm i express-generator -g
- 通过express模块创建一个文件夹 npx express -e 文件夹名
- 安装package.json的依赖包 npm i
- 在app.js文件中创建一个路由中间件
- 定义一个注册的模块,并在routes文件夹下新建一个register.js的文件
const express = require( 'express' );
const router = new express.Router();
// database 操作 --start
// 1. 安装mongoose cnpm i mongoose -S/-D
// 2. 引入mongoose
const mongoose = require( 'mongoose' );
const Schema = mongoose.Schema
// 3. 连接数据库
mongoose.connect( 'mongodb://127.0.0.1:27017/1903', ( error ) => {
if( error ){
throw error
}else {
console.log( 'database is connected~~' )
}
})
//4. 创建骨架( Schema ) 不能操作数据库
const userSchema = new Schema({
// 这个骨架的数据模型 ---- mySql中字段的定义
username: String,
password: String
})
//5. 创建模型 - 可以操作数据库
// const userModel = mongoose.model( 集合的名称[复数],骨架 )
const userModel = mongoose.model( 'users',userSchema )
//6. 创建实体 - 可以影响数据库
const user = new userModel()
// 数据 CRUD - 增
// user.username = 'Gabriel Yan',
// user.password = 123
// user.save()
// 数据 CRUD - 查
// userModel.find({},( error, result) => {
// if( error ) throw error
// console.log( result )
// })
// 数据 CRUD - 改
// userModel.find({ username: 'yyb' },( error , result ) => {
// if( error ) throw error
// const _id = result[0]._id
// // 修改
// userModel.findById( _id, ( error, doc ) => {
// if( error ) throw error
// doc.username = "Gabriel Yan"
// doc.save( ( error ) => {
// if( error ) throw error
// console.log( '数据修改成功' )
// })
// })
// })
// 数据库 CRUD - 删
// userModel.find({ username: 'Gabriel Yan' },( error , result ) => {
// if( error ) throw error
// const _id = result[0]._id
// // 修改
// userModel.findById( _id, ( error, doc ) => {
// if( error ) throw error
// doc.remove( ( error ) => {
// if( error ) throw error
// console.log( '数据删除成功' )
// })
// })
// })
// database 操作 --end
const db = require('../db')
//打造接口
router.get('/',( req,res,next ) => {
const { username,password } = req.query
userModel.find({},( error, result ) => {
const flag = result.some(( item )=> {
return item.username === username
})
console.log( flag )
if( flag ){
//这个表示数据库有这条数据
res.render( 'register', {
data: JSON.stringify( {
ret: true, // 身份验证 权限验证
status: 2 // 0 表示失败 1表示成功 2表示用户名重复
} )
})
}else{
// 表示数据库没有这条数据
user.username = username,
user.password = password
user.save()
res.render( 'register', {
data: JSON.stringify( {
ret: true, // 身份验证 权限验证
status: 1 // 0 表示失败 1表示成功 2表示用户名重复
} )
})
}
})
})
module.exports = router
- 在views文件夹下写一个register.ejs文件用于发送后端数据
- 写一个前端页面用于发送ajax请求
<div class="container">
<div class="row">
<form name="form">
<div class="form-group">
<label for="exampleInputEmail1"> 用户名 </label>
<input type="text" class="form-control" name="username" id="username" aria-describedby="emailHelp" placeholder="Enter username">
<small id="emailHelp" class="form-text text-muted"> 请输入您的用户名 </small>
</div>
<div class="form-group">
<label for="exampleInputPassword1"> 密码 </label>
<input type="password" name="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
</div>
<div class="form-check">
<input type="checkbox" class="form-check-input" id="exampleCheck1">
<label class="form-check-label" for="exampleCheck1">Check me out</label>
</div>
<button type="button" class="btn btn-primary" id="submit">Submit</button>
</form>
</div>
</div>
/*
1. 空ajax判断
2. 正则
*/
var form = document.form
var username = form.username
var password = form.password
var submit = document.querySelector('#submit')
submit.onclick = function () {
$.ajax({
url: 'http://localhost:3000/register',
data: {
username: username.value,
password: password.value
},
method: 'GET',
success ( res ) {
const result = JSON.parse( res )
switch ( result.status ) {
case 0:
alert( '注册失败' )
break;
case 1:
alert( '注册成功' )
break;
case 2:
alert( '用户名重复了,请您重新输入' )
break;
default:
break;
}
}
})
}