此篇文章,接 koajs 项目实战(一)后写
(六)表单提交和参数接收
表单:
<form method="post" action="./users/zhuce">内容部分</form>
koa1:
users.js
// 注册页路由
router.post('/zhuce', function *(next) {
// 获取参数
// let email = this.query['email']; // get 方式接收参数
let email = this.request.body['email']; // post 方式接收参数
// 输出
this.body = '收到email:' + email;
});
koa2:
users.js
// 注册页路由
router.post('/zhuce', async function (ctx, next) {
// 获取参数
// let email = ctx.query['email']; // get 方式获取参数
let email = ctx.request.body['email']; // post 方式获取参数
// 输出
ctx.body = '收到email:' + email;
});
注:router.all() 既接收 get 方式传参,也接收 post 方式传参。
(七)mongoose 连接 mongodb
1.项目下安装 mongodb 和 mongoose
npm install mongodb --save-dev
npm install mongoose --save-dev
2.router中
(1)创建model
UserModel.js
// 引入 mongoose
var mongoose = require('mongoose');
// 创建 user模块
var User = mongoose.model('user', new mongoose.Schema({
email:String,
pwd:String,
nicheng:String,
},{_id:true}));
module.exports = User;
(2)在 users.js 中,将 表单数据 保存至 数据库。
koa1:
koa2:
users.js
var router = require('koa-router')();
// 1.导入 mongoose
var mongoose = require('mongoose');
mongoose.Promise = global.Promise; // 2.初始化
// mongoose.Promise = require('bluebird'); // 疑似高效
// 3.导入 User
let User = require('../models/UserModel.js');
// 4.连接数据库
var db = mongoose.connect('mongodb://localhost/eduline');
router.prefix('/users');
// 默认路由
router.get('/', function *(next) {
this.body = 'this is a users response!';
});
// 登录页路由
router.get('/login', function *(next) {
// 绑定login.ejs文件
yield this.render('login',{});
});
// 注册页路由
router.post('/zhuce', function *(next) {
// // 获取参数
// // let email = this.query['email']; // get 方式接收参数
// let email = this.request.body['email']; // post 方式接收参数
// // 输出
// this.body = '收到email:' + email;
// 5.实例化 user
let user = new User(); // 因为user是关键词,当插入时,没有表会自动生成一个表,表名是users
// 6.保存参数
user.email = this.request.body['email'];
user.pwd = this.request.body['pwd'];
user.nicheng = this.request.body['nicheng'];
// 7.保存
yield user.save();
// 8.输出 自增涨id 自动生成组件
this.body = user._id;
});
module.exports = router;
mongodb的基础操作:
1.开启 mongodb
StartMongo
2.开启 端口(控制台)
startManager
3.查看数据库
use eduline
4.查看数据表
show collections
5.查看表数据
db.users.find()
(八)例外处理
1.创建索引 设置唯一键
db.users.ensureIndex({"email":1},{"unique":true,"name":"emailuiq"})
db.users.ensureIndex({"nicheng":1},{"unique":true,"name":"nichenguiq"})
2.例外处理(异常处理)
users.js
// 5.实例化 user
let user = new User(); // 因为user是关键词,当插入时,没有表会自动生成一个表,表名是users
// 6.保存参数
user.email = this.request.body['email'];
user.pwd = this.request.body['pwd'];
user.nicheng = this.request.body['nicheng'];
// 9.异常处理
try{
// 7.保存
yield user.save();
}catch(err){
console.log(err);
if(err.toString().indexOf('emailuiq')>1){
this.body = 'email重复';
}else if(err.toString().indexOf('nichenguiq')>1){
this.body = '昵称重复';
}
// 拦截
return;
}
// 8.输出 自增涨id 自动生成组件
this.body = user._id;
.