云开发能力

最近更新时间:2018-09-11 16:33:45

云开发控制台

云开发控制台是管理云开发资源的地方,控制台提供以下能力:

  • 概览:查看云开发基础使用数据
  • 用户管理:查看小程序用户信息
  • 数据库:管理数据库,可查看、增加、更新、查找、删除数据、管理索引、管理数据库访问权限等
  • 文件管理:查看和管理存储空间
  • 云函数:查看云函数列表、配置、日志和监控
  • 统计分析:查看云开发资源具体使用统计信息

以上的能力当中,数据库、文件管理与云函数,是可以通过小程序的API接口或者服务端 SDK 进行调用的,下一节会进一步介绍。

小程序(客户端)使用云开发能力

客户端,这里是指在小程序端中。如果要使用云开发能力,请做以下配置:

  • app.json / game.json 中, 中增加字段 "cloud": true
  • project.config.json 中增加了字段 cloudfunctionRoot 用于指定存放云函数的目录
  • 初始化云开发能力:
//app.js
App({
  onLaunch: function () {
    wx.cloud.init({
        traceUser: true
    });
  }
});

初始化能力文档

在用户管理中会显示使用云能力的小程序的访问用户列表,默认以访问时间倒叙排列,访问时间的触发点是在小程序端调用 wx.cloud.init 方法,且其中的 traceUser 参数传值为 true

小程序操作文件资源

// 选择图片
wx.chooseImage({
    success: dRes => {
        // 上传图片
        const uploadTask = wx.cloud.uploadFile({
            cloudPath: `${Date.now()}-${Math.floor(Math.random(0, 1) * 10000000)}.png`, // 随机图片名
            filePath: dRes.tempFilePaths[0], // 本地的图片路径
            success: console.log,
            fail: console.error
        });
    },
    fail: console.error,
});

存储文档

小程序操作数据库

const db = wx.cloud.database();

db.collection('blog').get().then((res) => {
    let data = res.data;
    console.log(data);
});

数据库文档

小程序调用云函数

wx.cloud.callFunction({
    name: 'addblog', // 云函数名称
    data: { // 传到云函数处理的参数
        title: '云开发 TCB',
        content: '存储、数据库存、云函数'
    }
}).then(res => {
    console.log(res)
}).catch((err) => {
    console.error(err);
});

云函数文档

服务端使用云开发能力

如果你想在云函数中,操作文件、数据库和云函数资源,你可以使用我们提供的服务端 SDK 进行操作。首先,进入到你的某个云函数中,安装以下依赖包:

npm i --save tcb-admin-node

在云函数中初始化

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

// 初始化资源
// 云函数下不需要secretId和secretKey。
// env如果不指定将使用默认环境
app.init({
  secretId: 'xxxxx',
  secretKey: 'xxxx', 
  env: 'xxx'
});

//云函数下使用默认环境
app.init()

//云函数下指定环境
app.init({
  env: 'xxx'
});

初始化文档

服务端操作文件资源

const app = require('tcb-admin-node');
app.init();

app.uploadFile({
    cloudPath: "cover.png",
    fileContent: fs.createReadStream(`${__dirname}/cover.png`)
}).then((res) => {
    console.log(res);
}).catch((err) => {
    console.error(err);
});;

存储文档

服务端操作数据库

const app = require('tcb-admin-node');
app.init();
const db = app.database();

db.collection('blogs').limit(10).get().then((res) => {
    console.log(res);
}).catch((err) => {
    console.error(err);
});;

数据库文档

服务端调用云函数

const app = require("tcb-admin-node");
app.init();

app.callFunction({
    name: 'addblog', // 云函数名称
    data: { // 传到云函数处理的参数
        title: '云开发 TCB',
        content: '存储、数据库存、云函数'
    }
}).then((res) => {
    console.log(res);
}).catch((err) => {
    console.error(err);
});

云函数文档

通过本章,相信你已经知道如何在小程序端和服务端使用 SDK 去操作各类云资源。接下来,我们会分别详情讲述云函数、数据库和存储详细的使用方法。

语法糖

大部份的接口,目前都支持两种写法,分别是 Promise 和 Async/Await,本节以 callFunction 作为例子,在云函数中介绍这两种写法。 Async/Await 本质上是基于 Promise 的一种语法糖,它只是把 Promise 转换成同步的写法而已。

Promise

const app = require("tcb-admin-node");
app.init();

exports.main = (event, context, callback) => {
    app.callFunction({
        name: 'addblog', // 云函数名称
        data: { // 传到云函数处理的参数
            title: '云开发 TCB',
            content: '存储、数据库存、云函数'
        }
    }).then((res) => {
        console.log(res);
        callback(null, res.data);
    }).catch((err) => {
        callback(err);
    });
};

Async/Await

const app = require("tcb-admin-node");
app.init();

exports.main = async (event, context) => {
    let result = null;

    try {
        result = await app.callFunction({
            name: 'addblog', // 云函数名称
            data: { // 传到云函数处理的参数
                title: '云开发 TCB',
                content: '存储、数据库存、云函数'
            }
        });
    }
    catch (e) {
        return e;
    }

    return result;
};

如果有其他疑问,您也可以在问答社区中寻求帮助。前往问答社区 >