Skip to content

wodewone/WechatStat

Repository files navigation

README

使用微信公众号查看统计数据 需先申请微信公众号(类型不限,个人,企业均可)

START

需要全局安装 pm2
npm install -g pm2

启动进程文件
npm i

本地开发
npm run dev

生产环境
npm run prd

在线查看 PM2 运行状态
https://app.pm2.io/

Update

  • 2020-08-24 增加数据库存储数据(Mongodb)

Structure Tree

WechatStat
├─README.md
├─app.js
├─appRecord.js
├─ecosystem.config.js
├─package-lock.json
├─package.json
├─server
|   ├─config.js
|   ├─index.js
|   ├─mixins.js
|   ├─volume
|   |   ├─getVolume.js
|   |   ├─index.js
|   |   ├─old.js
|   |   ├─otc
|   |   |  ├─202009
|   |   |  |   └20200918.json
|   |   ├─data
|   |   |  ├─202009
|   |   |  |   └20200918.json
|   ├─otc
|   |  └index.js
|   ├─market
|   |   ├─ACCESS_TOKEN.dog
|   |   └index.js
|   ├─fear
|   |  ├─ACCESS_TOKEN.dog
|   |  └index.js
|   ├─charts
|   |   └makeCharts.js
├─router
|   ├─README.md
|   ├─index.js
|   ├─router.config.js
|   ├─hb
|   | ├─_type
|   | |   └index.js
|   ├─get
|   |  ├─wx-media
|   |  |    └index.js
|   |  ├─chart
|   |  |   └index.js
├─plugin
|   ├─database.js
|   ├─f2Charts.js
|   ├─mongodb.js
|   ├─prefix.js
|   ├─utils.js
|   ├─upload2wx
|   |     ├─ACCESS_TOKEN.dog
|   |     ├─accessToken.js
|   |     └index.js
├─execute
|    ├─database.js
|    ├─pm2demo.js
|    ├─server.js
|    └volume.js
├─config
|   └index.js

treer -i "/^node_modules|chartsImg|^\.[\w+]/"

Record

Node Chart工具

PM2基础使用

Linux SSR

关于Node进程管理器PM2使用技巧和需要注意的地方

【koa2 Restful API 脚手架】

API

【PM2】

【mongodb docs】

【mongodb-node docs】

【decimal.js docs】

【mongodb 中文 docs】


Question

1. HTTP 返回图片不存储直接返回 stream

canvas画图表保存成图片,然后 http 请求返回图片类型
/v1/get/chart?limit=100&type=volume
根据请求参数生成对应类型的数据图表
之前是生成图片后存储返回图片路径,然后 ctx.body = fs.createReadStream(filePath)
但是存储的图片也没有其他用处,增加写入-读取的过程既浪费内存又浪费时间,
并且ctx.body可以接受 stream,尝试一堆后直接 ctx.body = canvas.createPNGStream()

详见 ./router/get/chart/index.js

2. NODE require本地模块使用 '绝对路径'

大多范例中 node 模块会使用相对路径基于当前当前文件进行引用,
但是实际中这样使用很不方便,尤其引用的路径嵌套比较深
require(../../../../) ?????
其实node中有相关方式来处理相关问题 = NODE_PATH (这里简单介绍用法,详情官方文档)

描述一段示例,现有项目结构如下

app
├─index.js
├─utils.js
├─plugin
|  ├─test1
|  |   └test1.js
|  ├─test2
|  |   └test2.js

index.js

require('./plugin/test1/test1.js')

test1.js

require('../../utils.js')

test2.js 中引用 test1.js

require('../test1/test1.js')

然后运行index.js

node index.js

修改启动方式

NODE_PATH=./ node app.js

./` 表示当前运行目录

即从当前运行目录开始检索引用模块,然后

test1.js 修改为

require('utils.js')

test2.js 修改为

require('plugin/test1/test1.js')

~简单直观
pm2 可以在配置文件中添加,详见 ./ecosystem.config.js

3. Axios Node 上传文件不能使用 'FormData'

相关问题:
公众号开发 调用【上传图文消息内的图片获取URL】接口时,返回 412 错误?

{
  // `data` 是作为请求主体被发送的数据
  // 只适用于这些请求方法 'PUT', 'POST', 和 'PATCH'
  // 在没有设置 `transformRequest` 时,必须是以下类型之一:
  // - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams
  // - 浏览器专属:FormData, File, Blob
  // - Node 专属: Stream
  data: {
    firstName: 'Fred'
  },
}

https://www.kancloud.cn/yunye/axios/234845

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published