此篇文章,接 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.实例化 userlet 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
StartMongo2.开启 端口(控制台)
startManager3.查看数据库
use eduline4.查看数据表
show collections5.查看表数据
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;

.

转载于:https://www.cnblogs.com/crazycode2/p/7707849.html

koajs 项目实战(二)相关推荐

  1. Taro多端开发实现原理与项目实战(二)

    Taro多端开发实现原理与项目实战(二) 多端电商平台项目概述及开发准备 学习了前面的基础知识和进阶后是否跃跃欲试?我们准备了一个电商平台的项目来和大家一起实践使用 Taro 开发电商平台. 项目概述 ...

  2. flutter 项目实战二 网络请求

    本项目借用 逛丢 网站的部分数据,仅作为 flutter 开发学习之用. 逛丢官方网址:https://guangdiu.com/ flutter windows开发环境设置 flutter 项目实战 ...

  3. c语言期中项目实战二—简易扫雷,思路分析加代码详细注释

    c语言期中项目实战二-简易扫雷,思路分析+代码详细注释 游戏介绍 项目步骤 模块化编程 设置菜单 设置棋盘 打印棋盘 布置雷 排查雷 总结及总代码和详细注释 游戏介绍 扫雷这个经典游戏,直到现在仍有很 ...

  4. mosquitto项目实战二三事(1)

    项目中基于mosquitto的使用已经做了有些时日了,工作也可能会在近期有所变动,正值这个契机,将mosquitto使用过程中的部分经验总结和输出一番. 一.mosquitto下载 可以从此路径下载m ...

  5. 客户管理模块(保存查询客户)| CRM客户关系管理系统项目实战二(Struts2+Spring+Hibernate)解析+源代码

    引入数据字典,配置一对多的关系 异步加载 (JSON的使用,将list集合封装为json的数据,然后删除部分数据,JSON的数据发送到前端,前端页面获取对应的数据,遍历json的数据) 数据字典(下拉 ...

  6. PHP之MVC项目实战(二)

    本文主要包括以下内容 GD库图片操作 利用GD库实现验证码 文件上传 缩略图 水印 GD库图片操作 <?php$img = imagecreatetruecolor(500, 300); //v ...

  7. 【项目实战二】基于模板匹配和形态学操作的信用卡卡号识别(OpenCV+Python)

    前言:信用卡卡号识别技术的发展有利于提高银行系统的业务水平和办事效率.相信此次通过学习使用OpenCV中的图像处理方法来实现信用卡卡号识别的项目,能让大家清楚地了解图像处理技术的一般方法与步骤以及如何 ...

  8. 爬虫项目实战二:爬取起点小说网

    爬取起点小说网 目标 项目准备 网站分析 反爬分析 代码实现 效果显示 目标 爬取一本仙侠类的小说下载并保存为txt文件到本地.本例为"大周仙吏". 项目准备 软件:Pycharm ...

  9. 项目实战二:共享单车后台2

    今天听雷鹏飞大佬讲了一个 material UI 记录一下 跟antd差不多 https://www.easy-mock.com/login 提供动态数据渲染 Easy mock mockjs搭建的平 ...

最新文章

  1. R构建层次聚类模型(Hierarchical Clustering)
  2. python手机版iphone-只会Python可造不出iPhone
  3. 安全篇:弱密码python检测工具
  4. 扫描文件夹_按下苹果手机这个键,立马变身成为扫描仪,你不会还不知道吧?...
  5. javascript 中的暗物质 - 闭包
  6. POJ 2236 - Wireless Network ( 并查集 )
  7. svd medium_我们刚刚放弃了Medium博客。 您可能也应该这样做。
  8. oracle move 换用户,Oracle move方法释放delete后的表空间
  9. 星辰网址缩短源码支持二维码
  10. oracle输出一天所有秒数,Oracle函数通过秒数或分钟数获取时间段
  11. c语言贪吃蛇咬到尾巴,【图片】C语言小游戏~贪吃蛇【c语言吧】_百度贴吧
  12. nsq php,NSQ 最佳实践
  13. onclick 事件
  14. c语言求英文字母编号,菜鸟求助,写一个随机输出26个英文字母的程序
  15. 【Storm入门指南】第六章 真实示例
  16. 如何使新浪播放器自动播放
  17. Spark编程核心抽象—RDD
  18. 测试工程师职业要求汇总(转)
  19. Guitar Pro2023中文版本下载及简谱功能详细介绍
  20. 对比数据库中两张表的数据

热门文章

  1. HTML元素-META全集
  2. 网站设计中程序员和美工的配合问题
  3. Macaca基础原理解析
  4. Differential Geometry之第八章常Gauss曲率曲面
  5. Spring Boot应用的打包和部署
  6. 史上最通俗的《深入理解计算机网络》目录
  7. DB2 CASE/IF 条件控制语句
  8. javascript 解决IE8 兼容 placeholder 属性 含password
  9. 工程师软技能3:如何学习
  10. goroutine与panic不得不说的故事