eggjs配置mysql数据库

npm i egg-mysql --save
 mysql:{enable: true,package: 'egg-mysql',},
 config.mysql={client: {// hosthost: '127.0.0.1',// 端口号port: '3306',// 用户名user: 'root',// 密码password: 'root',// 数据库名database: 'nideshop',},// 是否加载到 app 上,默认开启app: true,// 是否加载到 agent 上,默认关闭agent: false,}

egg.js的调试技巧

1 怎么查询错误

停掉数据库配置 报错

2 关于运行egg的技巧

npm run start 命令 正式上线(production)的时候我们才会npm run start

egg-scripts start --daemon --title=egg-server-project


配置端口号

config.cluster = {listen: {path: '',port: 7002,hostname: '0.0.0.0',}}

npm run stop
停止start

测试的时候怎么办?

npm run dev

配置跨域

说明: 跨域主要有两种,一种是前端代理跨域,一种后端跨域

1 前端代理配置跨域

2 后端跨域

egg.js跨域

npm/cnpm install egg-cors --save
  • 在egg项目中 config/plugins.js 添加以下配置
cors: {enable: true,package: 'egg-cors'
}
  • 在egg项目中 config/config.default.js 添加以下配置
module.exports = {const config = exports = {}config.security = {csrf: {enable: false,ignoreJSON: true},domainWhiteList: [ '*' ], // 白名单};config.cors = {origin: '*', // 如果不写origin则会按照白名单中的域名允许跨域, * 代表允许所有的域名进行跨域请求allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH'}}

express跨域

egg.js解决跨域egg-cors的本质还是来自于设置跨域header头

//设置跨域访问
app.all('*', (req, res, next) => {res.header("Access-Control-Allow-Origin", "*");res.header("Access-Control-Allow-Headers", "X-Requested-With");res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");res.header("X-Powered-By",' 3.2.1')res.header("Content-Type", "application/json;charset=utf-8");next();
});

分页

sql

select  *from  表名  limit 0,10;select *from nideshop_goods limit 20,10;select count(*)  from  nideshop_goods;

邮件

npm install nodemailer --save

关于发送邮件

短信(阿里云短信平台)

阿里云短信

npm install @alicloud/sms-sdk --save

上传

如果想要用hbuilderx去运行微信小程序开发者端,需要安全的端口

设置》通用设置》安全》服务端口

1 普通上传

1.1 egg上传
普通上传

2 express上传
前端代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>文件上传</title>
</head>
<body><h3>文件上传:</h3>选择一个文件上传: <br /><form action="/upload" method="post" enctype="multipart/form-data"><input type="file" name="content" /><br /><input type="submit" value="上传文件" /></form>
</body>
</html>

后端代码

var fs = require('fs');
var express = require('express');
var multer  = require('multer');var router = express.Router();
var upload = multer({dest: 'upload_tmp/'});router.post('/', upload.any(), function(req, res, next) {console.log(req.files[0]);  // 上传的文件信息var des_file = "./upload/" + req.files[0].originalname;fs.readFile( req.files[0].path, function (err, data) {fs.writeFile(des_file, data, function (err) {if( err ){console.log( err );}else{response = {message:'File uploaded successfully',filename:req.files[0].originalname};console.log( response );res.end( JSON.stringify( response ) );}});});
});module.exports = router;

2 阿里云oss上传

为了节省服务器的空间 , 占带宽,思考:为了解决这个带宽问题

阿里云和七牛云提供一种服务, 叫对象存储oss

appid: LTAIC6ZMDHPvtv5K

appsecret: TsCBZKXlybXggr900DGqtLeN2QB17J

安装阿里oss上传相关的工具

npm install ali-oss -D

调试代码的技巧 要用外网的IP地址

ipconfig

android和微信小程序用本地127.0.0.1是不行的,需要用对外网的

3 base64图片上传

有些时候上传的图片是base64的图片,需要大家用js将原本的文件转成base64的图片, 前端的文件转成base64上传

引入自:https://www.cnblogs.com/juehai/p/9706141.html

后端:

app.post('/upload', function(req, res){
//接收前台POST过来的base64
var imgData = req.body.imgData;
//过滤data:URL
var base64Data = imgData.replace(/^data:image\/\w+;base64,/, "");
var dataBuffer = new Buffer(base64Data, 'base64');
fs.writeFile("image.png", dataBuffer, function(err) {
if(err){
res.send(err);
}else{
res.send("保存成功!");
}
});
});

excel数据的读取

const Excel = require('exceljs');

excel的导入和导出

引自: https://www.jianshu.com/p/0f6a338c54f4

exceljs中文文档

依赖库引入
const fs = require('fs')
const Excel = require('exceljs')
初始化Excel
const workbook = new Excel.Workbook()
workbook.creator = 'test'
workbook.lastModifiedBy = 'test'
workbook.created = new Date()
workbook.modified = new Date()
生成一个工作表
let sheet = workbook.addWorksheet('2018-10报表')# Add column headers and define column keys and widths
sheet.columns = [{header: '创建日期', key: 'create_time', width: 15},{header: '单号', key: 'id', width: 15},{header: '电话号码', key: 'phone', width: 15},{header: '地址', key: 'address', width: 15}
]
const data = [{create_time: '2018-10-01',id: '787818992109210',phone: '11111111111',address: '深圳市'
}]
# Add an array of rows
sheet.addRows(data)
生成excel文件
return await workbook.xlsx.writeFile('attachement/用户报表.xlsx').then( async () => {this.ctx.attachment(`用户报表.xlsx`)this.ctx.type = '.xlsx'this.ctx.body = fs.readFileSync(filePath)
}, function (err: any) {console.log(err)
})

QQ第三方登录 微信第三方登录

在微信小程序开发者工具中,项目中的mainfest.json有App模块配置中有OAuth(登录鉴权),可以打开qq和微信的登录配置。

第一步 uniapp官网提供的文档
https://ask.dcloud.net.cn/article/192

第二步 找到qq第三方登录入口
https://connect.qq.com/index.html

腾讯官方提供的一些接口
https://wiki.connect.qq.com/api%E5%88%97%E8%A1%A8

腾讯官方提供的接口
https://wiki.connect.qq.com/js_sdk%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E

单独的进行第三方登录静态页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script type="text/javascript"  charset="utf-8"src="http://connect.qq.com/qc_jssdk.js"data-appid="101458871"data-redirecturi="http://169.254.201.186:7002/callback"></script>
</head>
<body><div><button id="qqLoginBtn">qq登录</button></div><script>QC.Login({btnId:"qqLoginBtn" //插入按钮的节点id});</script>
</body>
</html>

后端代码

async callback(){const { ctx } = this;//接收access_token//console.log(location)//console.log(JSON.stringify(ctx.query.access_token)+"--------------------")//通过授权得到access_token 获取用户的openidvar access_token=ctx.query.access_tokenvar url="https://graph.qq.com/oauth2.0/me?access_token="+access_tokenconst result = await ctx.curl(url);  //后端发送 http  get请求console.log(result.data.toString())  //callback( {"client_id":"101458871","openid":"BBB4A8B679A144168189DF4C27FA6132"} )var call = result.data.toString()var jsonz=JSON.parse(call.substring(9).substr(0,call.substring(9).indexOf(")")))var clientid = jsonz.client_idvar openid   = jsonz.openid//再次再请求一次接口var url="https://graph.qq.com/user/get_user_info?access_token="+access_token+"&oauth_consumer_key=101458871&openid="+openidconst res = await ctx.curl(url);var user = res.data.toString()console.log(user)//将数据存储到数据库中//var url="https://graph.qq.com/user/get_user_info?access_token="+access_token+"&openid=101458871"+"&oauth_consumer_key=12345"//通过后端发送get post请求var  location = "<script>window.location.href='http://localhost:8080/#/</script>"; ctx.body =  location ;}

uniapp集成qq第三方登录的js-sdk的过程

1 在跟目录中新建一个index.html

2 需要配置

3 需要在


就已经在项目集成好了jssdk


https://graph.qq.com/oauth2.0/show?which=Login&display=pc&client_id=101458871&response_type=token&scope=all&redirect_uri=http%3A%2F%2Fwww.jingkela.com%2Fqqlogin.php

可道云桌面

官网

http://app.grfuwutong.com/kod/index.php?user/login

进入服务器端可道云 看到controllers 内包含所有的接口信息

账户密码
/www/wwwroot/app.grfuwutong.com/addons/zjhj_mall/core/modules/api/controllers/

客服系统

websocket的定义

阮一峰的教学日志: http://www.ruanyifeng.com/blog/2017/05/websocket.html

我的客服系统账号

http://kefu.jingkela.com/platform/passport/login.html

常用的第三方的客服系统,百度商桥,但是都要收费

基于nodeJS也有类似的客服系统(必须有redis内存数据库)

github: https://github.com/gytai/KeFu

使用 socket.io.js 实现 websocket 实时通讯

https://www.jianshu.com/p/725ff42c7af3

redis环境的搭建

小P面板

xxtea加密

XXTEA for Node.js

引入 https://github.com/xxtea/xxtea-nodejs/releases

var xxtea = require('xxtea-node');var str = "Hello World! 你好,中国												

13-02-uniapp供热服务接口配置相关推荐

  1. 同一局域网内,调用其他同事本地服务接口配置

    1.网上有不少的文档,好多都是关闭防火墙的,我想说的是,真被其他的人的"误操作",自己找个其他地哭去吧 2.直接上干货 第一步: 第二步: 第三步: 第三步: 第四步,返回上一个界 ...

  2. Caffe学习系列(13):数据可视化环境(python接口)配置

    原文有更新: Caffe学习系列(13):数据可视化环境(python接口)配置 - denny402 - 博客园 http://www.cnblogs.com/denny402/p/5088399. ...

  3. 业务中台管理系统、业务中台架构、接口类服务、模型类服务、界面类服务、组件类服务、服务架构、中后台、服务审核、AI服务、位置服务、行业场景服务、企业中台、接口配置、模型配置、数据处理、结构化数据、数据源

    业务中台管理系统.业务中台架构.接口类服务.模型类服务.界面类服务.组件类服务.服务架构.中后台.服务审核.AI服务.位置服务.行业场景服务.企业中台.接口配置.模型配置.数据处理.结构化数据.数据源 ...

  4. 【SAP PO】SAP PO 接口配置完整教程之二REST服务对接

    SAP PO 接口配置完整教程之二REST服务对接 1.了解服务协议 1.1.服务通讯协议 1.2.具体接口协议 1.3.接口服务测试 2.PO端接口配置 2.1.PO端ESR配置 2.2.PO端IB ...

  5. 【SAP PO】X-DOC:SAP PO 接口配置 REST 服务对接填坑记

    X-DOC:SAP PO 接口配置 REST 服务对接填坑记 1.背景 2.PO SLD配置 3.PO https证书导入 1.背景 (1)需求背景: SAP中BOM频繁变更,技术人员在对BOM进行变 ...

  6. Oracle服务端配置IP,修改主机和服务器的 IPv6 接口配置

    修改主机和服务器的 IPv6 接口配置 本节介绍如何修改作为主机或服务器的节点上启用了 IPv6 的接口的配置.大多数情况下,应当针对启用了 IPv6 的接口使用地址自动配置,如<系统管理指南: ...

  7. dubbo服务接口如何mock_2019年Dubbo你掌握的如何?快看看这30道高频面试题!

    前言 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式 ...

  8. iframe的src动态修改并刷新_微服务中配置中心Config+消息总线Bus,实现分布式自动刷新配置

    技术/杨33 一.分布式配置中心Config 一套集中的.动态的配置管理,实现统一配置微服务中的每个子服务. Spring Cloud Config为微服务架构提供了集中化的外部配置支持,配置服务器为 ...

  9. 详解“FTP文件传输服务”安装配置实例

    "FTP文件传输服务"安装配置实例 家住海边喜欢浪:zhang789.blog.51cto.com 目录 简介 ftp工作原理 常见的FTP服务 Vsftpd服务器的安装 Vsft ...

  10. 微服务启动顺序_基于华为云CSE微服务接口兼容常见问题

    微服务接口兼容常见问题 在进行微服务持续迭代开发的过程中,由于新特性在不停的加入,一些过时的特性在不停的修改,接口兼容问题面临巨大的挑战,特别是在运行环境多版本共存(灰度发布)的情况下.本章节主要描述 ...

最新文章

  1. 修改.fig文件中图的x轴或y轴的标题及数据图
  2. 进化:一个平庸人的互联网之路
  3. QT的QScriptEngineAgent类的使用
  4. 小琛和他的学校(dfs)
  5. xmake高级特性之自定义选项
  6. 读后感《我回阿里的29个月》
  7. sm缩写代表什么意思_pe、PE在电气有代表什么意思,你发现没有,电气技术很有意思...
  8. 盘一盘2020年上半年的微博热搜词条(文末提供获取热搜词条方法)
  9. linux利用内存加快读盘速度,Linux性能优化从入门到实战:10 内存篇:如何利用Buffer和Cache优化程序的运行效率?...
  10. jquery插件实现分页
  11. 二级建造师学python有用_二级建造师
  12. SpringBoot中出现‘@‘ that cannot start any token. (Do not use @ for indentation)....
  13. task9-文件与文件系统
  14. python-RFM模型
  15. dfuse 发布自助 Auth API 账户管理门户,赋予开发者自主管理 key 的平台
  16. 办公室电脑如何修改IP地址、设置共享、连接打印机
  17. python变量的值的传递方式
  18. 数据分析中缺失值的处理方法
  19. yarn 安装 报错:“info There appears to be trouble with your network connectio“ 解决方案
  20. Python——加密后的China

热门文章

  1. 盛天海电商:拼多多的定价策略有哪些?
  2. 利用Oracle RDA( Remote Diagnostic Agent)快速收集Oracle产品分析数据
  3. 即时通讯软件七大优势详解
  4. 什么是嵌入式操作系统?
  5. 逃离北上广的“症结”
  6. 手机连接ftp文件服务器,手机链接ftp服务器地址
  7. 【优秀课设】JavaScript利用高德地图开放平台实现精准三点定位(通过距离半径,绘制多个circle)
  8. python 画风场_Python人工智能的味道 - 图像风格迁移
  9. Deepin Linux禁用笔记本自带键盘
  10. PS快速修改颜色的小方法