三大核心
- 云数据库
- 提供在小程序端直接对数据库进行增删改查的能力
- 数据库是类似于MongoDB的文档存储的数据库,操作非常方便
- 云存储
- 可以在小程序端直接上传、下载、删除文件
- 自带CDN,提高文件访问速度
- 可以获取临时链接,支持在小程序外访问
- 云函数
- 提供了在服务器代码的执行能力
- 包含微信天然的私有鉴权
- 更大权限的操作数据库等
- 进行云调用、HTTP请求等操作
数据库操作简单封装
export const db = wx.cloud.database();
class NBCollection {
constructor(collectionName) {
this.collection = db.collection(collectionName);
}
add(data) {
return this.collection.add({
data,
});
}
remove(condition, isDoc = true) {
if (isDoc) {
return this.collection.doc(condition).remove();
} else {
this.collection.where(condition).remove();
}
}
update(condition, data, isDoc = true) {
if (isDoc) {
return this.collection.doc(condition).update({
data });
} else {
return this.collection.where(condition).update({
data });
}
}
query(offset = 0, size = 20, condition = {
}, isDoc = false) {
if (isDoc) {
return this.collection.doc(condition).get();
} else {
return this.collection.where(condition).skip(offset).limit(size).get();
}
}
}
export const favorCollection = new NBCollection("nb_favor");
export const likeCollection = new NBCollection("nb_like");
云函数示例子
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
const db = cloud.database()
const type = event.type
const collection = db.collection("lol")
const res = await collection.get()
return {
name: "英雄联盟",
liveRooms: res.data
}
}
const cloud = require("wx-server-sdk");
cloud.init();
exports.main = async (event, context) => {
const qrCodeRes = await cloud.openapi.wxacode.createQRCode({
width: 320,
path: "pages/cloud-database/index",
});
const wxContext = cloud.getWXContext();
const timestamp = new Date().getTime();
const openid = wxContext.OPENID;
const extension = qrCodeRes.contentType.split("/").pop();
const cloudPath = `${
timestamp}_${
openid}.${
extension}`;
const uploadRes = await cloud.uploadFile({
fileContent: qrCodeRes.buffer,
cloudPath,
});
return uploadRes;
};
const cloud = require('wx-server-sdk')
const axios = require("axios")
cloud.init()
exports.main = async (event, context) => {
const res = await axios.get("http://123.207.32.32:8000/home/multidata")
return {
recommends: res.data.data.recommend.list,
banners: res.data.data.banner.list
}
}