crazycode2

此篇文章,接 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;

 

.

 

分类:

技术点:

相关文章:

  • 2021-10-25
  • 2022-12-23
  • 2021-11-30
  • 2022-12-23
  • 2021-04-21
  • 2022-01-20
猜你喜欢
  • 2021-12-13
  • 2022-02-12
  • 2021-07-04
  • 2021-12-12
  • 2022-12-23
  • 2021-12-11
  • 2021-12-02
相关资源
相似解决方案