云函数
增
await db.collection("like").add({
data: { // 下面是字段名称
articleId
},
});
删
await db.collection("article").doc(articleId).remove();
改
await db.collection("article")
.doc(articleId)
.update({
data: {
readNum: _.inc(1),
},
});
查
await cloud
.database()
.collection("article")
.where({
title: ''
})
.get();
模糊查询 + 分页
小程序前端搜索词为空可以查询所有数据
云函数中需要使用如下 regexp: “.*” + title
否则获取不到所有数据
async function list(event) {
try {
let { page = 1, limit = 10 } = event;
let skip = (page - 1) * limit;
let title = event.title ? event.title : "";
return await cloud
.database()
.collection("article")
.where({
title: new db.RegExp({
regexp: ".*" + title,
options: "is",
}),
})
.skip(skip)
.limit(limit)
.get();
} catch (error) {
console.log(error);
}
}
连表查询
async function footmark(event) {
try {
let { page, limit } = event;
let skip = (page - 1) * limit;
let data = await db
.collection("footmark")
.aggregate()
.match({ // 相当于 where
openId: cloud.getWXContext().OPENID,
})
.sort({
updateTime: -1,
})
.skip(skip)
.limit(limit)
.lookup({
from: "article", // 要连接的表名
localField: "articleId", // 当前表要匹配的字段
foreignField: "_id", // 连接表匹配的字段
as: "user", // 输出的新字段名称(为数组)
})
// 下面两步是把数组转换为对象输出
.addFields({ // 添加一个新字段
userInfo: $.arrayElemAt(["$user", 0]),
})
.project({
user: 0, // 删除字段
})
.end();
return data.list;
} catch (error) {}
}
订阅消息
config.json
{
"permissions": {
"openapi": ["subscribeMessage.send"]
},
}
index.js
const cloud = require("wx-server-sdk");
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
});
exports.main = async (event, context) => {
try {
const { openId, name, content, id, time } = event;
await cloud.openapi.subscribeMessage.send({
touser: openId, // 发送人的 openid
page: `/pages/articleDetail/articleDetail?id=${id}`,
lang: "zh_CN",
data: { // 上图中的参数
thing1: {
value: content,
},
thing3: {
value: name,
},
time2: {
value: time,
},
},
templateId: "2NREbnRpV9MWezQ4Pg785jxQduYz1rG6AU1TFOVdjK0", // 模板 id
miniprogramState: "formal",
});
return {
errCode: 1,
};
} catch (err) {
}
};
定时任务
文档地址
config.json
{
"triggers": [
{
"name": "myTrigger",
"type": "timer",
"config": "0 19 20 * * * *"
}
]
}