要和守约赴约
要和守约赴约
  • 发布:2022-05-17 13:44
  • 更新:2022-05-17 13:44
  • 阅读:992

分享云函数调用云函数的一个简陋的解决方法

分类:uniCloud

应用场景:最近需要做一个用户验证的函数,由于还没有学习使用框架是直接分了多个文件夹存放不同的云函数,那么就需要跨文件夹调用云函数。
前情提要:云函数在接受前端返回数值时会获得用户登录凭证。

问题出现:当我A文件夹内的 index.js 调用B文件夹内的 index.js 内的 test函数时,根据官方文档,我们可以像前端一样调用:

// 调用B文件夹对应云函数
await uniCloud.callFunction({
name: 'uni-id-cf',
data: {
action: 'action',
params: params
}
});

实践结果可以在B文件夹内的index.js中打印传输过来的event,但是函数没有得到调用,打印返回值是 {code: 403, msg: '缺少token'},而这段返回值来自于:

const {
action,
uniIdToken
} = event;

//UNI_WYQ:这里的uniID换成新的,保证多人访问不会冲突  
uniID = uniID.createInstance({  
    context  
})  

//event为客户端上传的参数  
console.log('event : '   JSON.stringify(event));  
console.log('context : '   JSON.stringify(context))  

if (!uniIdToken) {  
    return {  
        code: 403,  
        msg: '缺少token'  
    }  
}  

很明显是没有得到uniIdToken,这是本应从前端传输获取的,那么最终修改是手动添加传输uniIdToken:

await uniCloud.callFunction({
name: 'uni-id-cf',
data: {
action: 'action',
params: params
uniIdToken: event.uniIdToken
}
});

虽然仍然会有提示缺少context等,但是确实是可以正常运行了。等以后有更好的解决方法了再回来更新~

0 关注 分享

要回复文章请先登录注册