
“好事”文章推荐:前端打包与资源优化导览
文章链接:https://cloud.tencent.com/developer/article/2466737
推荐好文介绍前端打包优化4个方向:减少打包时长、减少打包体积、减少访问时长、减少响应时长讲解每个方向都有哪些优化点等等
书接上回
「原生微信小程序+云开发,源码给你们多久能开流量主?(上)」
我先引用微信小程序官方的介绍:
《优势》
《能力》
是不是很牛逼,不知道大家怎么看,我觉得不管是在敏捷开发效率上,还是开发的便利性,或是微信生态环境的能量指数全都是五颗星啊,作为一个一直在一线从事前端开发的切图仔来说,自己开发一个完整的项目完全足够了。
在创建项目的是时候,我选择了云开发

配置app.js
App({
onLaunch: function () {
if (!wx.cloud) {
console.error("请使用 2.2.3 或以上的基础库以使用云能力");
} else {
wx.cloud.init({
env: "换上你的云开发环境ID mp-6gxxxxx31",
traceUser: true,
});
}
this.globalData = {};
},
globalData: {
mortgageData: null
}
});因为对后端不是很熟悉,根据需要大概分了几个集合,欢迎指点
对应创建的云数据库集合,大概也能得出所需要的云函数接口,后续还计划了开发多人账本、添加个性化记账类型等功能 🐦🐦🐦
登录接口,可以直接获取user信息和openId 超级方便,登录的同时绑定账本
// 云函数入口文件
const cloud = require("wx-server-sdk");
cloud.init({
env: '换上你的云开发环境ID,或者通过cloud.DYNAMIC_CURRENT_ENV获取',
});
const db = cloud.database({
env: '换上你的云开发环境ID,或者通过cloud.DYNAMIC_CURRENT_ENV获取',
});
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext();
let user = event.user;
let bookList = [];
// 查询用户是否存在,更新用户信息
db.collection("myb_user")
.where({
_openid: wxContext.OPENID,
user: wxContext.OPENID,
})
.get()
.then((resp) => {
if (resp.data.length <= 0) {
let newUser = {
...user,
createdTime: new Date(),
updateTime: new Date(),
user: wxContext.OPENID,
_openid: wxContext.OPENID,
loginTime: new Date(),
status: 0,
};
// 添加新的用户
db.collection("myb_user")
.add({
data: newUser,
})
.then((resp) => {
console.log(resp);
})
.catch((err) => {
console.log(err);
});
} else {
let newUser = resp.data[0];
newUser.loginTime = new Date();
newUser.updateTime = new Date();
newUser.status = 0;
let _id = newUser._id;
delete newUser._id;
db.collection("myb_user")
.doc(_id)
.update({
data: newUser,
})
.then((resp) => {
// console.log(resp)
})
.catch((err) => {
console.log(err);
});
}
});
// 登录后,自动创建默认账本,暂不支持修改
await db.collection("myb_book")
.where({
_openid: wxContext.OPENID,
isAuto: true,
user: wxContext.OPENID,
})
.get()
.then((resp) => {
// 不存在默认账本,创新新的默认账本
if (resp.data.length <= 0) {
let book = {
status: 0,
createdTime: new Date(),
updateTime: new Date(),
user: wxContext.OPENID,
name: "喵喵默认账本",
isDefault: true,
isAuto: true,
_openid: wxContext.OPENID,
};
db.collection("myb_book")
.add({
data: book,
})
.then((resp) => {
db.collection("myb_book")
.where({
_openid: wxContext.OPENID,
isAuto: true,
user: wxContext.OPENID,
})
.get()
.then((book) => {
bookList = book.data;
}).catch((err) => {
console.log(err);
});
})
.catch((err) => {
console.log(err);
});
} else {
bookList = resp.data;
}
});
return {
event,
bookList,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
};
};记账记录的添加/修改
// 云函数入口文件
const cloud = require("wx-server-sdk");
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
});
const db = cloud.database({
env: cloud.DYNAMIC_CURRENT_ENV,
});
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext();
let { collection, data } = event;
let entity = {};
let _id;
// 判断是否已存在id
if (data._id) {
entity = data;
_id = data._id;
entity.updateTime = new Date();
await db
.collection(collection)
.doc(_id)
.update({
data: entity,
})
.then((resp) => {})
.catch((err) => {
// console.log(err)
});
} else {
entity = {
...data,
createdTime: new Date(),
updateTime: new Date(),
user: wxContext.OPENID,
_openid: wxContext.OPENID,
status: 0,
};
await db
.collection(collection)
.add({
data: entity,
})
.then((resp) => {})
.catch((err) => {
console.log(err);
});
}
return {
data: null,
errCode: 0,
errMsg: "操作成功",
};
};这个地方很简单,正常操作。大家可以根据自己的想法,看看要不要添加一个新增/修改个性化记账类型接口
// 云函数入口文件
const cloud = require("wx-server-sdk");
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
});
const db = cloud.database({
env: cloud.DYNAMIC_CURRENT_ENV,
});
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext();
let incomeTypes = [];
await db
.collection("myb_income_type")
.where({
status: 0,
})
.get()
.then((resp) => {
// console.log(resp.data)
incomeTypes = resp.data;
});
return {
data: incomeTypes,
errCode: 0,
errMsg: "操作成功",
};
};记账列表数据
// 云函数入口文件
const cloud = require("wx-server-sdk");
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
});
const db = cloud.database({
env: cloud.DYNAMIC_CURRENT_ENV,
});
const MAX_LIMIT = 100;
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext();
let collection = event.collection;
let dataList = [];
const countResult = await db
.collection(collection)
.where({
status: 0,
})
.count();
const total = countResult.total;
const batchTimes = Math.ceil(total / 100);
const tasks = [];
for (let i = 0; i < batchTimes; i++) {
const promise = db
.collection(collection)
.where({
status: 0,
})
.skip(i * MAX_LIMIT)
.limit(MAX_LIMIT)
.get();
tasks.push(promise);
}
dataList = (await Promise.all(tasks)).reduce((acc, cur) => ({
data: acc.data.concat(cur.data),
errMsg: acc.errMsg,
})).data;
return {
data: dataList,
errCode: 0,
errMsg: "操作成功",
};
};根据记账类型,分类的统计数据
// 云函数入口文件
const cloud = require("wx-server-sdk");
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
});
const db = cloud.database({
env: cloud.DYNAMIC_CURRENT_ENV,
});
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext();
console.log(event);
let { collection, pageIndex, pageSize, orderFiled, order } = event;
pageSize = pageSize || 10;
let dataList = [];
const countResult = await db
.collection(collection)
.where({
status: 0,
})
.count();
const total = countResult.total;
dataList = await db
.collection(collection)
.orderBy(orderFiled || "_id", order || "desc")
.limit(pageSize)
.skip((pageIndex - 1) * pageSize)
.get();
let result = {
list: dataList.data,
total,
pageIndex,
pageSize,
};
return {
data: result,
errCode: 0,
errMsg: "操作成功",
};
};后续关注微信小程序开发,如何快速找到合适的小程序、如何快速开通流量主,持续更新ing...
关注点赞评论一条龙,超过预期,提供所有代码,教你快速开流量主,赚钱 小程序流量主日入100不是梦!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。