LeanCloud 入门使用记录 —— 我的小程序后端是怎么搭起来的

最近在做一个叫M-Planease的小程序,主要是用来做计划管理的,前端我自己写的,后端则选择了LeanCloud。这篇文章算是一个小结,记录我使用LeanCloud的一些过程,如果你也在做小程序、web项目,或者不太想自己部署服务器、搭数据库,LeanCloud也许能帮上忙

为什么选 LeanCloud?

其实刚开始我也犹豫过,要不要直接用 Node.js 搭一套后端,MongoDB 或 MySQL 来存数据。但项目时间比较紧,而且我不想一开始就把重心放在DevOps 上。
LeanCloud 提供了:

  • 数据存储(有点类似于 FirebaseSupabase

  • 用户系统(注册登录等)

  • 云函数(逻辑托管)

  • 文件存储(适合小程序上传头像、附件)

对我这种想先做 MVP 的个人开发者来说,够用了。

一、初始化 LeanCloud 项目

先去官网注册账号,然后创建一个应用。LeanCloud 支持国内节点和国际节点(这个看你用户群在哪里)。创建完应用后,记下
AppIDAppKey服务器地址(Server URL),后续初始化 SDK 会用到。
小程序端需要用它的小程序 SDK,可以用 npm 装:

1
npm install leancloud-storage

然后在入口文件中初始化:

1
2
3
4
5
6
7
8
import AV from 'leancloud-storage';

AV.init({
appId: '你的AppId',
appKey: '你的AppKey',
serverURL: '你的ServerURL',
});

二、数据存储(增删改查)

LeanCloud 的数据结构是 “类”(Class)+ “对象”(Object),相当于 MongoDB 里的集合和文档。你可以理解成每一个 Class 就是一张表。

举个例子,比如我有一个“计划”类 Plan

1
2
3
4
5
6
7
8
9
10
const Plan = AV.Object.extend('Plan');

const plan = new Plan();
plan.set('title', '健身计划');
plan.set('status', 'incomplete');

plan.save().then((res) => {
console.log('保存成功:', res);
}).catch(console.error);

查询则是这样

1
2
3
4
5
6
const query = new AV.Query('Plan');
query.equalTo('status', 'incomplete');
query.find().then((results) => {
console.log('查询结果:', results);
});

更新数据

1
2
plan.set('status', 'complete');
plan.save();

删除数据

1
plan.destroy();

很像操作本地对象,逻辑上比较顺手。

三、用户系统(登录注册)

LeanCloud 提供了用户表(_User),直接用它的 API 就能注册、登录:

注册用户

1
2
3
4
5
6
7
const user = new AV.User();
user.setUsername('testuser');
user.setPassword('123456');
user.signUp().then((user) => {
console.log('注册成功:', user);
});

登录用户

1
2
3
4
AV.User.logIn('testuser', '123456').then((user) => {
console.log('登录成功:', user);
});

获取当前用户

1
const currentUser = AV.User.current();

LeanCloud SDK 会自动保存登录态,不用你自己做 Token 管理,方便但也需要注意退出逻辑:

1
AV.User.logOut();

四、小程序登录适配

如果你在小程序端使用微信登录,可以结合 wx.login() 和 LeanCloud 的 loginWithWeapp()

1
2
3
AV.User.loginWithWeapp().then((user) => {
console.log('微信登录成功:', user);
});

在 LeanCloud 控制台中要绑定小程序 AppID,并开启小程序登录权限,不然会报错。

五、云引擎(可选)

虽然前端可以直接操作数据,但有些逻辑还是放在后端更合适,比如权限控制、定时任务等。LeanCloud 提供了 Node.js 云函数的写法,支持部署:

1
2
3
AV.Cloud.define('hello', async (request) => {
return 'Hello Mintal!';
});

你可以在前端调用它:

1
AV.Cloud.run('hello').then(console.log);

部署流程 LeanCloud 文档里写得比较清楚,这里就不赘述了。

六、控制台使用和权限设置

控制台可以查看数据表结构、对象详情、API 调用日志,也可以设置 Class 权限(比如是否允许用户写入、是否只读等)。

我建议早期开发可以先允许所有权限,等功能稳定了再收紧权限,避免前期因为权限卡住开发效率。

小结

LeanCloud 的确不能满足所有场景,比如它不适合处理高并发的业务逻辑,不支持关系型数据的复杂 JOIN,也不能自定义服务结构。但如果你和我一样,是一个人做
side project、MVP、个人产品,它能帮你省下很多配置服务器、搭建数据库、写用户系统的时间。

我目前用下来体验还算平稳,主要是省心。如果以后 M-Planease 的用户量上来了,也许我会考虑迁移到自建后端。