代码
// token 换取文件 const axios = require('axios')// const dbs = require('../models/mo')const Config = require('../models/config')const token = () => new Promise(async (res, rej) => { const times = (new Date()).getTime() //当前时间戳 axToke = (cd) => { let config = { appid: 'wxf37a0371d5c7a359', secret: '4802d7147d421ad8e775f95ca98d7180', grant_type: 'client_credential' } let url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + config.appid + '&secret=' + config.secret axios.get(url).then(res => { cd(res.data) }, err => { cd(err) }) } // let accessTokes = await dbs.findo(Config, {}) let accessTokes = await Config.findOne({}) console.log('查询tokes', accessTokes, times); if (accessTokes.accessToken == null) { axToke(cd => { let key = { _id: accessTokes._id } let obj = { '$set': { accessToken: cd.access_token, //toke tokeTime: times + (cd.expires_in - 100) * 1000 // toke到期时间 } } Config.update(key, obj).then(r => { Config.findOne({}).then(rs => { console.log('新增tokes', rs); res(rs) }) }) }) } else if (accessTokes.tokeTime <= times) { console.log('toke过期', accessTokes.tokeTime, times); axToke(cd => { let key = { _id: accessTokes._id } let obj = { '$set': { accessToken: cd.access_token, //toke tokeTime: times + (cd.expires_in - 100) * 1000 // toke到期时间 } } Config.update(key, obj).then(r => { Config.findOne({}).then(rs => { console.log('新增tokes', rs); res(rs) }) }) }) } else { console.log('toke有效', accessTokes); res(accessTokes) }})module.exports = token