小程序·云开发:新手常见问题全解答
李成熙,腾讯云高级工程师。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运行环境里(不是云开发)调用云开发的服务,要做哪些额外配置。
需要填入腾讯云的 SecretId
和 SecretKey
。通过此链接登录小程序对应的腾讯云帐号,然后在云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
的文件当中。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 还在从零开始搭建项目?手撸了款快速开发脚手架!
- Node.js 中的 require 是如何工作的?
- Ajax请求携带Cookie
- 关于kubernetes垃圾回收那点事
- 强化学习笔记11:工程师看强化学习
- 强化学习笔记10:经典游戏示例 classic games
- RL实践3——为Agent添加Policy、记忆功能
- 强化学习仿真环境搭建入门Getting Started with OpenAI gym
- 数据分析与数据挖掘 - 04科学计算
- SwiftUI:使用 @EnvironmentObject 从环境中读取自定义值
- JavaScript 启动性能瓶颈分析与解决方案
- 大白话理解Vuex
- 【Java面试总结】计算机网络
- volatile关键字 Krains 2020-08-26
- synchronized关键字 Krains 2020-08-25