const getToken = (appid,appkey) => {
return new Promise(async (resolve, reject) => {
console.log('开始获取')
const { data } = await uniCloud.httpclient.request(`https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appid}&secret=${appkey}`, {
contentType: 'json', // 指定以application/json发送data内的数据
dataType: 'json', // 指定返回值为json格式,自动进行parse
});
console.log('获得到的token',data)
const db = uniCloud.database();
// 获取 `user` 集合的引用
const collection = db.collection('chart-token');
// 先删除所有数据
// await collection.where({}).remove();
const key = `${appid}_token`;
// 再插入数据
// collection.add({`${appid}_token`: data.access_token || '' });
await collection.where({}).update({[key]: data.access_token || '' });
console.log('插入成功',key,data.access_token)
resolve(data);
})
};
exports.main = async (event, context) => {
//event为客户端上传的参数
Object.keys(config).forEach((key) => {
const appid = config[key].appid;
const secret = config[key].secret;
console.log(key, appid, secret);
getToken(appid,secret)
});
//返回数据给客户端
return event;
};
当云函数使用,调用正常,但是定时执行,看日志是有执行,但每次都是执行到 await uniCloud.httpclient.request(这里,就没了,下面的不会执行了
散步的羊 (作者)
非常感谢指点,现在我在forEach里面加上awiat还是一样,await getToken()也不会执行完,就被销毁了,这种情况需要怎么处理呢,谢谢
2022-12-20 15:41
DCloud_uniCloud_CRL
回复 散步的羊: 不要使用forEach,forEach其实是 for 循环的callback,不会等待执行的。
2022-12-20 20:41