一、云函数
云函数
在传统开发模式中充当的角色就是接口。API 调用云函数,云函数去操作数据库后把返回值响应给页面。

二、创建云函数
您可以在 云开发开放平台 单击云函数 > 新建云函数
- 1 新建云函数
- 2 在线开发


在线开发云函数


本例云函数为"executorHandler",在该目录中:
- node_modules 为该云函数的依赖,需要通过 npm install xx 去安装相关依赖
- index.js 云函数主文件(在该文件中编写业务代码增、删、改、查)
- package.json 该云函数配置
二、编写云函数
- 新增
add()
- 删除
remove()
- 更新
aupdate()
- 查询
get()
2.1 引入及初始化
js
const cloud = require("wx-server-sdk");
cloud.init({
env: "dev-1234567890", // 使用当前云环境
});
const db = cloud.database();
const _ = db.command;
2.2 新增
场景:往数据库表"user"添加一个用户
js
const cloud = require("wx-server-sdk");
cloud.init({
env: "dev-1234567890", // 使用当前云环境
});
const db = cloud.database();
const _ = db.command;
exports.main = async (event, context) => {
// event 为 APIs 传入的参数;context 为环境变量,包含了openId、appId等
const { api } = event;
switch (api) {
// 新增
case "onAdd":
return await onAddHandler(event, context);
default:
return {
code: -1,
msg: "api not found",
};
}
};
// 新增
async function onAddHandler(event, context) {
const transaction = await db.startTransaction(); // 开始事务
let result;
try {
result = await transaction.collection("user").add({
data: [{
openid: context.OPENID,
name: event.userName,
status: event.status,
createTime: Date.now()
}]
});
transaction.commit(); // 提交事务
} catch (error) {
transaction.rollback();
throw new Error("unknwon error");
}
return result;
}
2.3 删除
场景:在数据库"user"表中删除某一个用户
js
const cloud = require("wx-server-sdk");
cloud.init({
env: "dev-1234567890", // 使用当前云环境
});
const db = cloud.database();
const _ = db.command;
exports.main = async (event, context) => {
// event 为 APIs 传入的参数;context 为环境变量,包含了openId、appId等
const { api } = event;
switch (api) {
// 删除
case "onDelete":
return await onDeleteHandler(event, context);
default:
return {
code: -1,
msg: "api not found",
};
}
};
// 删除
async function onDeleteHandler(event, context) {
const transaction = await db.startTransaction(); // 开始事务
let result;
try {
result = await transaction.collection("user")
.where({
_id: event._id
})
.remove();
transaction.commit(); // 提交事务
return {
code: 0,
message: '删除成功',
data: result
};
} catch (error) {
transaction.rollback();
throw new Error("unknwon error");
}
return result;
}
2.4 更新
场景:在数据库"user"表中更新某一个用户的状态
js
const cloud = require("wx-server-sdk");
cloud.init({
env: "dev-1234567890", // 使用当前云环境
});
const db = cloud.database();
const _ = db.command;
exports.main = async (event, context) => {
// event 为 APIs 传入的参数;context 为环境变量,包含了openId、appId等
const { api } = event;
switch (api) {
// 更新
case "onUpdate":
return await onUpdateHandler(event, context);
default:
return {
code: -1,
msg: "api not found",
};
}
};
// 更新
async function onUpdateHandler(event, context) {
const transaction = await db.startTransaction(); // 开始事务
let result;
try {
result = await transaction.collection("user")
.where({
_id: event._id
})
.update({
data: {
STATUS: "1",
UPDATE_TIME: Date.now()
}
});
transaction.commit(); // 提交事务
return {
code: 0,
message: '更新成功',
data: result
};
} catch (error) {
transaction.rollback();
throw new Error("unknwon error");
}
return result;
}
2.5 查询
场景:查询数据库表"user"中所有状态为"1"的数据
js
const cloud = require("wx-server-sdk");
cloud.init({
env: "dev-1234567890", // 使用当前云环境
});
const db = cloud.database();
const _ = db.command;
exports.main = async (event, context) => {
// event 为 APIs 传入的参数;context 为环境变量,包含了openId、appId等
const { api } = event;
switch (api) {
// 查询
case "onGet":
return await onGetListHandler(event, context);
default:
return {
code: -1,
msg: "api not found",
};
}
};
// 查询
async function onGetListHandler(event, context) {
let result = await transaction.collection("user")
.where({
status: "1"
})
.get();
return result;
}
2.6 调试 & 部署
右键点击云函数,可以对云函数进行调试和部署。测试云函数是否通过,点击"调试";通过 APIs 方式联调前,需对云函数进行部署。

三、云数据库
在这里,数据库我们选择"文档型"。

集合名称为表名,权限设置可按实际需求选择,点击"确定"即创建"user"表成功。(表名不可重复)
