小程序云开发从入门到上线看这一篇就够了,做了6年的前端

文章介绍了如何在微信小程序中使用云开发进行数据库操作,包括前端直接操作和推荐使用云函数。详细展示了登录代码、增删改查函数示例,并提及了提供给前端开发者的学习资源。
摘要由CSDN通过智能技术生成

App({

onLaunch: function () {

if (!wx.cloud) {

console.error(“请使用 2.2.3 或以上的基础库以使用云能力”);

} else {

wx.cloud.init({

env: “xxxx”, // 修改成云开发控制台里复制过来的自己的环境ID,

traceUser: true,

});

}

this.globalData = {};

},

});

2. 项目开发


数据库

官方文档(云开发 - 数据库)

打开云开发之后创建数据库,就可以操作数据库,建议不要减少直接操作数据库,选择用前端或者云函数操作数据库。

创建数据库

前端操作数据库

onAdd: function () {

const db = wx.cloud.database()

db.collection(‘counters’).add({

data: {

count: 1

},

success: res => {},

fail: err => {}

})

},

云函数

官方文档(云开发 - 云函数)

相较于前端直接操作数据库,我更建议使用云函数操作数据库,使得前端的代码更为纯粹。

登录代码

const cloud = require(“wx-server-sdk”);

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV });

const db = cloud.database();

const collection = db.collection(“users”);

const addUser = (OPENID, userInfo) => {

return new Promise((resolve, reject) => {

collection

.doc(OPENID)

.set({ data: userInfo })

.then(() => {

resolve();

})

.catch((err) => {

reject(err);

});

});

};

exports.main = async (event, context) => {

const { userInfo } = event.data;

const { OPENID, APPID, UNIONID } = cloud.getWXContext();

try {

await addUser(OPENID, userInfo);

return {

code: 200,

msg: “登陆成功”,

data: { userId: OPENID, …userInfo },

};

} catch (err) {

return { code: 500, msg: “服务器错误!”, err };

}

};

小程序端调用云函数

fetch({

name: “login”,

data: { userInfo: e.detail.userInfo },

}).then((res) => {

if (res.code != 200) {

app.toast(res.msg);

return;

}

wx.setStorageSync(“userInfo”, res.data);

this.setData({ userInfo: res.data });

this.getData(res.data.userId);

});

封装的 fetch 函数

export function fetch(params) {

return new Promise((resolve, reject) => {

const { name, data } = params;

wx.cloud.callFunction({

name,

data: { data },

success: (res) => {

resolve(res.result);

},

fail: (err) => {

reject(err);

},

});

});

}

增改

const cloud = require(“wx-server-sdk”);

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV });

const db = cloud.database();

const collection = db.collection(“punchGoal”);

const createPunchGoal = (data) => {

return new Promise((resolve, reject) => {

collection

.add({ data: { …data, count: 0 } })

.then(() => {

resolve();

})

.catch((err) => {

reject(err);

});

});

};

const updatePunchGoal = (data) => {

const id = data._id;

delete data._id;

return new Promise((resolve, reject) => {

collection

.doc(id)

.update({ data: { …data } })

.then(() => {

resolve();

})

.catch((err) => {

reject(err);

});

});

};

exports.main = async (event, context) => {

// 数据校验

const params = [“goalName”, “iconName”, “punchTimes”, “startTime”];

if (

!params.every(

(item) =>

event.data[item] !== “” &&

event.data[item] !== null &&

event.data[item] !== undefined

)

) {

return { code: 500, msg: “参数错误!” };

}

event.data.userId = cloud.getWXContext().OPENID;

// 时间格式化

event.data.date = new Date();

for (const item of [“startTime”, “endTime”]) {

event.data[item] = event.data[item] ? new Date(event.data[item]) : null;

}

try {

if (event.data._id) {

await updatePunchGoal(event.data);

return { code: 200, msg: “修改成功” };

} else {

await createPunchGoal(event.data);

return { code: 200, msg: “新增成功” };

}

} catch (err) {

return { code: 500, msg: “服务器错误!”, err };

}

};

const cloud = require(“wx-server-sdk”);

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV });

const db = cloud.database();

const collection = db.collection(“punchGoal”);

const getPunchGoalList = (data) => {

const { userId } = data;

return new Promise(async (resolve, reject) => {

collection

.where({ userId })

.get()

.then((res) => {

resolve(res.data);

})

.catch((err) => {

reject(err);

});

});

};

exports.main = async (event, context) => {

if (!event.data.userId) {

return { code: 500, msg: “参数错误!” };

}

try {

const list = await getPunchGoalList(event.data);

return { code: 200, msg: “查询成功”, data: { list } };

} catch (err) {

return { code: 500, msg: “服务器错误!”, err };

}

};

删除

const cloud = require(“wx-server-sdk”);

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV });

const db = cloud.database();

const collection = db.collection(“punchGoal”);

const deletePunchGoal = (punchGoalId) => {

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

❤️ 谢谢支持

喜欢的话别忘了 关注、点赞哦~。

前端校招面试题精编解析大全

025277285)]
[外链图片转存中…(img-TCkPI7bi-1712025277285)]
[外链图片转存中…(img-0VjvGK1o-1712025277285)]
[外链图片转存中…(img-ng02I1zr-1712025277286)]
[外链图片转存中…(img-YRJ7jPTB-1712025277286)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-EZLLmKRM-1712025277286)]

❤️ 谢谢支持

喜欢的话别忘了 关注、点赞哦~。

[外链图片转存中…(img-Gzhr04m1-1712025277287)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值