# 云函数操作常见问题

点击查看更多问题解答 (opens new window)

# 1、如何在云函数中访问http服务

传送门 (opens new window)

# 2、请求云函数报403错误

code=403 为权限不足,通常是因为你写的云函数没有放在`pub``kh`目录下导致的
pub目录:任何人都可以请求的云函数
kh目录:只有登录用户才可以请求的云函数
sys目录:登录且拥有对应权限的用户才可以请求的云函数
1
2
3
4

# 3、云函数中时区问题导致获取到的本月起始时间和截止时间不准确

// 使用以下api可以解决时区问题:
let commonTime = vk.pubfn.getCommonTime(new Date());
1
2

# 4、云函数中如何使用缓存

传送门 (opens new window)

# 5、云函数中如何将网络图片上传到云储存

传送门 (opens new window)

# 6、云函数中如何将网络图片转成base64

传送门 (opens new window)

# 7、云函数中如何调用另一个云函数

# 方式一(推荐,vk-unicloud版本需>=2.9.0)

注意:方式一只支持符合VK框架路由规则的云函数或云对象

优势:完美契合VK框架,且拥有继承当前用户token、ip等功能。

// 云函数内调用其他云函数或云对象内的函数,在同一个router大函数下,name参数可不传
let callRes = await vk.callFunction({
  name: "router",
  url: 'client/user/pub/test',
  event,
  data: {
    a:1
  },
});
console.log(callRes)

// 云对象内调用其他云函数或云对象内的函数,在同一个router大函数下,name参数可不传
let callRes = await vk.callFunction({
  name: "router",
  url: 'client/user.test',
  clientInfo: this.getClientInfo(),
  data: {
    a:1
  },
});
console.log(callRes)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 方式二(此方式适用任何场景)

优势:可以请求不是vk框架下的云函数

let callFunctionRes = await uniCloud.callFunction({
  name: "router",
  data: {
    $url: "client/user/pub/test",
    data: {
      a:1,
      b:2
    }
  }
});
console.log(callFunctionRes.result)
1
2
3
4
5
6
7
8
9
10
11

# 方式三 (此方式需要单独写成公共函数,如 service/user/util/login_log.js

优势:减少一次网络请求,性能高

// 下方代码是演示调用 service/user/util/login_log 文件内的 add函数
let loginLogService = vk.require("service/user/util/login_log");
await loginLogService.add({
  type: "login",
  login_type: "univerify",
  user_id: res.uid,
  context: originalParam.context
},util);
1
2
3
4
5
6
7
8

点击查看更多问题解答 (opens new window)