小程序·云开发:新手常见问题全解答

李成熙,腾讯云高级工程师。2014年度毕业加入腾讯AlloyTeam,先后负责过QQ群、花样直播、腾讯文档等项目。2018年加入腾讯云云开发团队。专注于性能优化、工程化和小程序服务。微博 | 知乎 | Github

小程序·云开发 文档里,则是所有与小程序·云开发相关的文档内容。下面会通过用户关心的的一些问题,介绍在哪里可以找到对应的文档。

1. 云开发是可以用于所有的小程序基础库吗?

是的,参考兼容性问题进行配置。

2. 云开发的服务,可以在哪些端被调用?不同端会有哪些的调用能力的不同?

可以在小程序端和服务端调用。小程序端是通过内置的接口调用。而服务端,这里包括原有的服务和云函数,可以通过 wx-server-sdk 或者 tcb-admin-node 其中一个 node sdk 进行调用,前者是基于后者进行二次开发的。如果希望开发体验与小程序端一致,可采用 wx-server-sdk。小程序端的调用由于安全问题,会由较多的限制,而在服务端,则是可拥有管理员的权限(所以你会发现 tcb-admin-node 带有 admin 字眼,表示具有管理员权限)。

小程序端的 API 文档,可在 小程序端 API 文档 查看。

服务端的 API 文档,可在 云开发 Server API 文档 查看。

3. 在自己的服务器或者电脑本地的Node运行环境里(不是云开发)调用云开发的服务,要做哪些额外配置。

需要填入腾讯云的 SecretIdSecretKey。通过此链接登录小程序对应的腾讯云帐号,然后在云API密钥 里获取。

云API密钥

获取密钥后,可使用 tcb-admin-node,在你的服务器里调用云开发的服务。

// 初始化示例
const cloud = require('tcb-admin-node');

// 初始化资源
// 云函数下不需要 secretId和secretKey,但如果在自己的服务器里使用则需要
// env如果不指定将使用默认环境
cloud.init({
  secretId: '',
  secretKey: '',
});

// 获取所有数据的方法
async function getData(colName) {
  const db = cloud.database();
  const userCollection = db.collection(colName);

  // 统计数据总量
  let res = await userCollection.count();
  let total = res.total;

  let data = [];
  let length = 0;
  let start = 0;
  
  // 循环将数据读出来
  while (total > length) {
    let res = await userCollection.skip(start).get();

    // 读出来后将数据存到data里
    data = data.concat(res.data);
    length += res.data.length;
    start += length;
  }

  return data;
}

getData('users').then((data) => {
    console.log(data);
}); // 调用方法

4. 云函数的创建和依赖安装。

project.config.json 文件里,要添加以下字段,指向云函数的根目录。

{
   "cloudfunctionRoot": "./server/functions/"
}

那意味着,如果我们想建一个叫 test 的云函数,需要在 ./server/functions 这个目录里新建 test 目录 ,并且要在 test 里安装依赖。千万不要在根目录安装依赖!

5. 云函数可以互相调用吗?

可以的,在 A 云函数里面,执行以下的语句就可以调用 B 云函数了,跟小程序端调用其实是一样的。

const cloud = require('wx-server-sdk');
exports.main = async (event, context) => {
  const res = await cloud.callFunction({
    // 要调用的云函数名称
    name: 'B',
    // 传递给云函数的参数
    data: {
      x: 1,
      y: 2,
    }
  })
  return res.result;
}

6. 是否可以批量导入导出数据?

可以的,请参考 数据库导入数据库导出

7. 数据库的在不同端的权限是怎么样的?

小程序端的权限没有服务端那么高,请参 权限控制

8. 在小程序端,如何使用 async/await 语法?

在云函数里,由于 Node 版本最低是 8.9,因此是天然支持 async/await 语法的。而在小程序端则不然。在微信开发者工具里,以及 Android 端手机(浏览器内核是 QQ浏览器的 X5),async/await是天然支持的,但 iOS 端手机在较低版本则不支持,因此需要引入额外的 polyfill。可把这个 polyfill 文件引用到有使用 async/await 的文件当中。

在 js 里引入 polyfill

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java工程师日常干货

分布式利器Zookeeper(三)前言Zookeeper分布式锁的代码实现zkclientCurator

本篇博客是分布式利器Zookeeper系列的最后一篇,涉及的话题是:Zookeeper分布式锁的代码实现、zkclient的使用、Curator框架介绍等。

852
来自专栏前端架构与工程

webpack多页面开发与懒加载hash解决方案

本文内容只适用于webpack v1版本,webpack v2已经修复了hash计算规则。 之前讨论了webpack的hash与chunkhash的区别以及各...

2108
来自专栏码神联盟

灵丹妙药 | 关于缓存,你必须要知道的

这两天小编一直在总结缓存的要点,也同时参考了一些文档,仅此奉上,以供参考。 缓存是必备技能 身为后端开发的开发人员,缓存是必备技能。不需要花费太多的精力就能显著...

3457
来自专栏进击的程序猿

ZooKeeper: Wait-free coordination for Internet-scale systems(笔记)

本文是读ZooKeeper: Wait-free coordination for Internet-scale systems的笔记,从第一手资料了解zook...

923
来自专栏点滴积累

Ubuntu16.04双网卡主备配置

前几日写了一篇Ubuntu14.04双网卡主备配置,没成想变化总是这么快,今日安装某软件,提示最匹配的ubuntu版本是16.04,作为一个码农能有什么办法,只...

4625
来自专栏IT技术精选文摘

缓存在分布式系统中的应用

缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。 一、缓存概述 缓存是分布式系统中的重要组件,主要...

2979
来自专栏程序员互动联盟

【线程池】线程池与工作队列

为什么要用线程池? 诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式...

3478
来自专栏IT大咖说

基于 Swoft 协程框架的 PHP 微服务治理

内容来源:2018 年 05 月 27 日,Swoole开源项目创始人韩天峰在“【上海】OSC源创会第75期”进行《基于 Swoft 协程框架的 PHP 微服务...

4582
来自专栏北京马哥教育

9 个使用前必须再三小心的 Linux 命令

Linux shell/terminal 命令非常强大,即使一个简单的命令就可能导致文件夹、文件或者路径文件夹等被删除。 在一些情况下,Linux 甚至不会询问...

3466
来自专栏FreeBuf

通过Password Vault的XSS漏洞获取用户密码测试

大家好!自我上次写作以来到现在已经有段时间了。今天,我想和大伙分享一些非常有意思的内容。为了存储及管理的方便,相信大家可能都会选择使用一些密码管理器来存储不同网...

923

扫码关注云+社区