zoukankan      html  css  js  c++  java
  • koajs 项目实战(二)

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

    .

  • 相关阅读:
    document
    reg() replace
    BOM和DOM的区别
    注册表
    实现移动端通过下拉菜单栏实现pc端的导航栏
    通过ajax获取api,并且通过jquery获取自定义属性
    git的使用
    当盒子不设置width,而设置max-width遇到的问题
    CSS之position
    JavaScript之数组常用的方法
  • 原文地址:https://www.cnblogs.com/crazycode2/p/7707849.html
Copyright © 2011-2022 走看看