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

.

koajs 项目实战(二)的更多相关文章

  1. 【NFS项目实战二】NFS共享数据的时时同步推送备份

    [NFS项目实战二]NFS共享数据的时时同步推送备份 标签(空格分隔): Linux服务搭建-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品, ...

  2. miniFTP项目实战二

    项目简介: 在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务 ...

  3. koajs 项目实战(一)

    (一)koa 1.Koa(koajs)--  基于 Node.js 平台的下一代 web 开发框架 koa1 npm install koa -g npm install koa-generator ...

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

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

  5. React-Native 之 项目实战(二)

    前言 本文有配套视频,可以酌情观看. 文中内容因各人理解不同,可能会有所偏差,欢迎朋友们联系我. 文中所有内容仅供学习交流之用,不可用于商业用途,如因此引起的相关法律法规责任,与我无关. 如文中内容对 ...

  6. appium+python自动化项目实战(二):项目工程结构

    废话不多说,直接上图: nose.cfg配置文件里,可以指定执行的测试用例.生成测试报告等.以后将详细介绍.

  7. 【SSH项目实战三】脚本密钥的批量分发与执行

    [SSH项目实战]脚本密钥的批量分发与执行 标签(空格分隔): Linux服务搭建-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载, ...

  8. 第二次作业——个人项目实战(sudoku)

    第二次作业--个人项目实战(sudoku) 一.作业要求地址 第二次作业--个人项目实战 二.Github项目地址 softengineering1--sudoku 三.PSP表格估计耗时 PSP2. ...

  9. 【SSH项目实战】脚本密钥的批量分发与执行【转】

    [TOC] 前言 <项目实战>系列为<linux实战教学笔记>第二阶段内容的同步教学配套实战练习,每个项目循序衔接最终将组成<Linux实战教学笔记>第二阶段核心教 ...

随机推荐

  1. HDU 5307 He is Flying ——FFT

    卷积的妙用,显然我们可以求出所有符合条件的右端点的和,然后减去左端点的和. 就是最后的答案.然后做一次前缀和,然后就变成了统计差是一个定值的情况. 令$A(s[i])++$ $B(s[i])+=i$ ...

  2. pat 团体天梯赛 L2-012. 关于堆的判断

    L2-012. 关于堆的判断 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 将一系列给定数字顺序插入一个初始为空的小顶堆H[] ...

  3. 一个request,但是controller被执行了多次的问题

    原文发布时间为:2011-09-25 -- 来源于本人的百度文章 [由搬家工具导入] 这两天竟然被一个bug整疯了,因为项目调试的时候,通过 sql profiler 查看,竟然执行了多次的相同 查询 ...

  4. link 和 runtime-link,搭配shared 和 static(转)

    原文转自 http://blog.csdn.net/yasi_xi/article/details/8660549 参考: http://bbs.sjtu.edu.cn/bbscon,board,C, ...

  5. eclipse 同一个package 有的文件 中文乱码,有的文件中文正常

    1.这是编码格式导致的. 先在对应包名上右击,选择属性,将包内所有的文件都设置为GBK格式, 然后查看每个文件,如果有乱码,则将这个文件的编码格式单独设为 UTF-8 2.有个项目使用百度语音做开发, ...

  6. 64位linux 汇编

    c源码:testg.c 1 #include<stdio.h>                2                                   3 #define s ...

  7. C#性能优化篇 - 基于索引器封装EPList

    using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Sy ...

  8. function in Postgres

    CREATE or REPLACE FUNCTION fn_attr_category() RETURNS void AS $BODY$ declare v_tmp_rec record; begin ...

  9. centos7.2安装tomcat8

    环境: 阿里云centos7.2 tomcat8.0.32 jdk8.131 1 上传tomcat安装包到服务器的/home(个人习惯) 2 解压安装包 [root@iZt4n6h3u4k407nni ...

  10. Nowcoder Girl 参考题解【待写】

    [官方题解]:https://www.nowcoder.com/discuss/65411?toCommentId=1134823 [题目链接]:https://www.nowcoder.com/te ...