这里完成一个简单的用户注册的小demo 前台用户给后台提交一个 userName 和password 字段
前端访问的是路由 /user/registUser 请求方式 post
后端使用的是 koa和mongodb数据库 (需要 有koa和mongodb的知识)
首先在桌面上新建立一个空的shop文件夹
npm init -y 创建一个项目初始化package.json文件
开始之前还是先把环境装好
"glob": // 用于 将 mongoose定义的model 规范的文件 导出
"koa":
"koa-bodyparser" , // 中间件 快速 取出post请求中的参数
"koa-router": // 用于设置路由
"koa2-cors": // 设置跨域问题
"mongoose": // mongodb数据连接需要
cnpm i 上述插件包 -S
1.建立数据库连接 文件 shop/init.js
const mongoose=require('mongoose');
// 引入 schma
const glob=require('glob');
const path=require('path')
exports.initSchemas=()=>{
glob.sync(path.resolve(__dirname,'./model','*.js')).forEach(require); // 将model下的js文件 都导入
}
exports.connect=()=>{
mongoose.connect("mongodb://localhost/shop",{ useNewUrlParser: true,useUnifiedTopology: true } ) // 连接数据库
// 连接的时候
mongoose.connection.once('open',()=>{
console.log('连接成功!');
})
}
2.创建 mongodb 数据库 集合的规范 数据库中的数据将按照下面的规范进行存储数据 shop/model/User.js
const mongoose=require('mongoose');
const Schema=mongoose.Schema;
// 定义集合中每一个字段的规则
const userSchema=new Schema({
userId:Schema.Types.ObjectId,
userName:{unique:true,type:String},// 设置用户名唯一的
password:String,
createDate:{type:Date,default:Date.now()}
})
mongoose.model('User', userSchema); //发布模型
3.创建服务器文件 shop/index.js
const Koa=require('koa');
const app=new Koa();
const cors=require('koa2-cors');
// 配置跨域
app.use(cors({
origin:['http://localhost:8080'],
credential:true
}))
// 加载路由
const Router=require('koa-router');
let user=require('./controller/user.js');
// 接受前端请求
const bodyParser=require('koa-bodyparser');
app.use(bodyParser()); // 注册
let router=new Router();
router.use('/user',user.routes()); // 注册 user下的路由
app.use(router.routes());
app.use(router.allowedMethods()) // 只允许发送 我设置的请求 如:get post
// 引入 schema
const { connect,initSchemas } =require('./init.js');
(async ()=>{
await connect(); // 先连接 再初始化 mongodb 保证先后顺序
initSchemas()
})()
app.listen(3000,()=>{
console.log('服务器开启成功!');
})
4.创建路由文件 shop/controller/user.js
const Router=require('koa-router');
let router=new Router();
const mongoose=require('mongoose');
router.post('/registUser',async (ctx)=>{
const User=mongoose.model('User');
let newUser=new User(ctx.request.body);
await newUser.save().then(()=>{
console.log('保存成功!')
ctx.body={
code:200,
msg:'注册成功!'
}
}).catch(err=>{
console.log(err);
ctx.body={
code:500,
msg:err
}
})
})
module.exports=router;
然后就是打开命令行 运行 node index.js 服务器文件