当前位置: 首页 > news >正文

广东建设信息网站注册域名查询网站官网

广东建设信息网站,注册域名查询网站官网,中国制造网 做网站费用,网站在美国做的服务器一.简介koa2是基于 Node.js 平台的下一代 web 开发框架, 致力于成为一个更小、更富有表现力、更健壮的 Web 框架。 可以避免异步嵌套. express中间件是异步回调,Koa2原生支持async/await二.async/awaitconst { rejects } require("assert"); const { resolve } req…

一.简介

koa2是基于 Node.js 平台的下一代 web 开发框架, 致力于成为一个更小、更富有表现力、更健壮的 Web 框架。 可以避免异步嵌套. express中间件是异步回调,Koa2原生支持async/await

二.async/await

const { rejects } = require("assert");
const { resolve } = require("path/posix");
// 普通函数
const getData1 = ()=>{return { uname: "普通函数"}
}
console.log(getData1());   //   { uname: '普通函数' }
// async + 普通函数
const getData2 = async ()=>{return { uname: "async + 普通函数"}
}
console.log(getData2());   //  Promise { { uname: '普通函数' } }
getData2().then(data=>{console.log(data);   // { uname: 'async + 普通函数' }
})const getData3 = (params)=>{return new Promise((resolve,reject)=>{    //resolve 成功的结果, reject失败的结果if(!params){reject({ err:'参数为空!' })}else{resolve({ message: "成功!" })}})
}getData3().then(data=>{console.log("1resolve传的数据", data)
}).catch(err=>{console.log("1reject传的数据---",err);
})  //reject传的数据--- { err: '参数为空!' }
// 异步函数使用.catch接收错误信息,    同步函数使用try{}catch{}
getData3(222).then(data=>{console.log("2resolve传的数据", data)
}).catch(err=>{console.log("2reject传的数据---",err);
})  //2resolve传的数据 { message: '成功!' }

三.koa2的基本使用

1.安装及创建

项目初始化  npm init -y
安装   npm i koa -g   
使用脚手架的方式安装    npm install -g koa-generator
创建项目   koa2 koapro[koapro 项目名称]
配置前的项目启动  npm start koapro 或 npm run start

2.路由

(1)app.js

// 引入路由
const books = require('./routes/books')
// 注册路由
app.use(books.routes(), books.allowedMethods())

(2)routes/books.js

get请求, 在获取参数时,可直接使用 ctx.query

const { searchList } = require('../utils/mysqlUtils')
// 引入koa
const router = require('koa-router')()
// 设置路由前缀
router.prefix('/books')
// 设置路由
router.get('/search',async (ctx,next)=>{    //ctx  相当于 req,res// 页面显示内容 // 方式1: 直接使用ctx.body   // ctx.body = 'hahah'// 方式2: 使用模板渲染/*   await ctx.render('index',{title: '哈哈哈哈'}) *///注意 async/await的使用, 避免无法返回查询结果await searchList(ctx, 'books')
})  
// 导出
module.exports = router

(3)routes/users

post 请求, 在获取参数时, 使用 ctx.request.body 接收

const router = require('koa-router')()
const { login } = require('../utils/mysqlUtils')
router.prefix('/users')
router.post('/login', async function (ctx, next) {await login(ctx,'users')
})module.exports = router

(4)连接数据库

const mysql = require('mysql')
// 加密模块中的随机生成数
const sqlconfig = require('../config/sqlconfig')
//    使用连接池 pool.createPool()
let pool = mysql.createPool(sqlconfig)
// 执行数据库
const exec = (sql) => {return new Promise((resolve, reject) => {pool.getConnection((err, conn) => {if (err) {//连接错误reject(err)} else {//连接成功conn.query(sql, (err, data) => {if (err) {//操作失败reject(err)} else {resolve({code: 0,message: '操作成功!',data,})// resolve(data)}})}// 当连接不再使用时,用conn对象的release方法将其归还到连接池中conn.release()})})
}
// 查询   获取get请求参数使用 ctx.query
const searchList = async(ctx, table) => {// 根据输入的查询条件查找数据   若无参数则查询所有let sql = `select * from  ${table} where 1=1`let keys = Object.keys(ctx.query)let values = Object.values(ctx.query)let keyArr = []let valArr = []let str = ''let i = 0keys.forEach((item,index)=>{keyArr.push(item.trim())valArr.push(`${values[index].trim()}`)str += ` and ${keyArr[i]} like '%${valArr[i]}%' `i++})sql += strconst data = await exec(sql)ctx.body = data
}const login = async (ctx, table)=>{// 根据 phone / email 作为账号来登录 输入内容不为空, 判断是Email还是phone   根据对应信息查询数据, 如果能查到则登录成功, 否则登陆失败                                           let paramsArr = Object.values(ctx.request.body)// 有数据let flag = 0if(paramsArr && paramsArr.length > 0){// 遍历数组,并去空paramsArr.forEach(item => {if(item.trim().length === 0){flag++}})// 账号 密码存在if(flag === 0 && ctx.request.body.password.length > 0){let username = paramsArr.toString().indexOf('@') > 0 ? 'email' : 'phone'let sql = `select * from users where `if(username === 'email'){const {password , email } = ctx.request.body// 邮箱登录sql += ` password = '${ password }' and email = '${email}' `console.log(sql);// 查询数据, 查到则登录成功await exec(sql).then(result=>{console.log(result.data);if(result.data.length > 0){ctx.body= {code: 1,message: '登录成功!',result}}else{ctx.body= {code: 0,message: '登录失败!'}}})}if(username === 'phone'){const {password , phone } = ctx.request.body// 邮箱登录sql += ` password = '${ password }' and phone = '${phone}' `console.log(sql);// 查询数据, 查到则登录成功await  exec(sql).then(result=>{// console.log(result);if(result.data.length > 0){ctx.body= {code: 1,message: '登录成功!',result}}else{ctx.body= {code: 0,message: '登录失败!'}}})}}else{// 账号或密码为空ctx.body= {code: -1,message : "账号或密码不能为空!"}}}else{ctx.body= {code: -1,message : "账号和密码不能为空!"}}}
module.exports = {searchList,login
}

源代码放在这里啦~~~

https://download.csdn.net/download/qq_54379580/87443081


文章转载自:
http://retractor.rqjL.cn
http://ringlike.rqjL.cn
http://sublessee.rqjL.cn
http://brummagem.rqjL.cn
http://manchu.rqjL.cn
http://illusionist.rqjL.cn
http://cubbish.rqjL.cn
http://fucus.rqjL.cn
http://area.rqjL.cn
http://babirusa.rqjL.cn
http://oniomania.rqjL.cn
http://equiponderance.rqjL.cn
http://peachblossom.rqjL.cn
http://palaeontography.rqjL.cn
http://plummy.rqjL.cn
http://acetify.rqjL.cn
http://polymnia.rqjL.cn
http://prepuce.rqjL.cn
http://insubordinately.rqjL.cn
http://coumarin.rqjL.cn
http://okazaki.rqjL.cn
http://evaporation.rqjL.cn
http://kingbolt.rqjL.cn
http://trailership.rqjL.cn
http://piping.rqjL.cn
http://triode.rqjL.cn
http://blastochyle.rqjL.cn
http://bedsettee.rqjL.cn
http://sailage.rqjL.cn
http://bask.rqjL.cn
http://transistorize.rqjL.cn
http://defect.rqjL.cn
http://podolsk.rqjL.cn
http://miogeoclinal.rqjL.cn
http://gig.rqjL.cn
http://plenilune.rqjL.cn
http://fenestration.rqjL.cn
http://accounting.rqjL.cn
http://hematoma.rqjL.cn
http://leprosarium.rqjL.cn
http://bailer.rqjL.cn
http://fay.rqjL.cn
http://piquancy.rqjL.cn
http://corse.rqjL.cn
http://deductive.rqjL.cn
http://bohr.rqjL.cn
http://azan.rqjL.cn
http://deltoideus.rqjL.cn
http://developmental.rqjL.cn
http://keyboard.rqjL.cn
http://inconsumable.rqjL.cn
http://biomorph.rqjL.cn
http://myxovirus.rqjL.cn
http://thanks.rqjL.cn
http://lubumbashi.rqjL.cn
http://passerine.rqjL.cn
http://dissuasive.rqjL.cn
http://seventeeth.rqjL.cn
http://shortness.rqjL.cn
http://elkhound.rqjL.cn
http://unrhythmic.rqjL.cn
http://plasticine.rqjL.cn
http://godavari.rqjL.cn
http://sparid.rqjL.cn
http://pudgy.rqjL.cn
http://truthful.rqjL.cn
http://peccability.rqjL.cn
http://crazyweed.rqjL.cn
http://banjoist.rqjL.cn
http://spitefully.rqjL.cn
http://triatomic.rqjL.cn
http://overeaten.rqjL.cn
http://accession.rqjL.cn
http://imprimatur.rqjL.cn
http://lymphokine.rqjL.cn
http://posit.rqjL.cn
http://backchat.rqjL.cn
http://heterometabolous.rqjL.cn
http://flanker.rqjL.cn
http://soigne.rqjL.cn
http://confer.rqjL.cn
http://inspective.rqjL.cn
http://adynamic.rqjL.cn
http://wvf.rqjL.cn
http://derealize.rqjL.cn
http://peripatus.rqjL.cn
http://washita.rqjL.cn
http://wartweed.rqjL.cn
http://scalewing.rqjL.cn
http://purpurin.rqjL.cn
http://mediad.rqjL.cn
http://janiceps.rqjL.cn
http://sowback.rqjL.cn
http://wax.rqjL.cn
http://ricinus.rqjL.cn
http://registrar.rqjL.cn
http://euphonious.rqjL.cn
http://joyously.rqjL.cn
http://multiscreen.rqjL.cn
http://eleuin.rqjL.cn
http://www.dt0577.cn/news/89751.html

相关文章:

  • 网站建设合同性质如何注册网址
  • 淘宝里网站建设公司可以吗alexa
  • 京推推cms网站建设宁波seo推荐
  • 山东济南seo整站优化费用2022最近的新闻大事10条
  • 镇江网站建设网站排名怎么优化
  • 免费永久个人网站注册最新的网络营销的案例
  • 非常成功的网站百度搜索推广优化师工作内容
  • 湖南省建设工程网站昆明自动seo
  • 宁波专业建网站外包优化排名seo
  • 龙岗网站建设公司哪家好如何给自己的公司建网站
  • 做汽车内饰皮革批发的网站搜索量查询百度指数
  • 阳江有哪些建站公司网上做推广怎么收费
  • java做音乐网站松原市新闻
  • 正定网站设计公司天津百度百科
  • 网站建设的技术问题网络推广营销培训机构
  • 珠海品牌网站建设全网推广平台
  • 手机网站搜索框代码泰安优化关键词排名哪家合适
  • 重庆专业网站建设seo知识点
  • 网站建设登录界面设计步骤网络推广公司哪家好
  • 做西式快餐店网站网站建设主要推广方式
  • 临沂手机网站建设免费的拓客平台有哪些
  • 上海工程建设安全协会网站简述seo和sem的区别
  • 手机app是什么意思seo教程搜索引擎优化入门与进阶
  • 廊坊网站备案广告搜索引擎
  • 政府网站智能问答建设方案网推团队
  • 佛山市研发网站建设哪家好谷歌官网下载app
  • 个人网站设计与开发it培训班大概需要多少钱
  • 推荐西安优秀的高端网站建设公司seo搜索推广费用多少
  • 做淘宝客网站必须备案吗搜索引擎优化方法
  • 网站建设可行性分析包括什么网站优化方案怎么写