使用uniCloud开发客户端及后台管理如何共用一个服务空间?不覆盖云函数及schema表结构

前言

使用uniapp+unicloud开发项目,主要是因为开发起来比较简单,能够快速将想法落地实现,而且云开发不用租用服务器,运营成本极低,对于开发中小项目来讲非常友好。

一般项目都会存在客户端和后台管理,分别是对应的两个项目,虽然项目不同,但是数据肯定要保持一致的,所以两个项目必须要保持关联同一个服务空间共用一个数据。

uniadmin后台管理

创建项目我一般都会先创建基于uniadmin的后台管理,该模版集成了常规项目的大多数功能,比如uni-id用户体系、适配移动端及PC端等功能,而且创建好了项目中需要的schema表结构,基于uniadmin的二次开发会更方便容易一些。

uni-admin项目关联服务空间

创建uni-admin项目时,该项目会内置很多的cloudfunctions方法和database表结构,如下图所示:
在这里插入图片描述
创建好了之后,要先给uni-admin项目关联服务空间,我选的是阿里云的按量计费服务空间,非常省钱,初始化的时候,会弹窗云端已存在公共模块或方法,或者已存在某个方法,或schema数据结合等;
一律点替换(勾选应用全部,省了一个弹窗点击了)。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
这样uni-admin已经关了好了服务空间,很简单没什么说的,重点是下面,如何让客户端也关了同一个服务空间,而且不会出现云函数及数据表覆盖的现象。

客户端项目导入uni-id用户体系

uni-id下载地址:https://ext.dcloud.net.cn/plugin?name=uni-id-pages
在这里插入图片描述
下载插件,打开软件后,选择要给哪个项目安装uni-id用户体系。
在这里插入图片描述
uni-id-pages会自动创建出很多的页面,勾选合并pages即可,后续不需要的页面再自行删除,点击确认后会有组件的列表弹窗,点击合并即可。
在这里插入图片描述
关联服务空间和上面后台关联是不同的,需要选择绑定其他项目的服务空间,勾选我们刚刚的后台管理项目,这样,两个项目便可使用同一个服务空间,不至于上传到云端时候出现函数或schema同名的问题。
在这里插入图片描述

### Unicloud数据库表结构设计与实现 #### 数据库初始化与连接 为了在 UniCloud 中操作云数据库,首先需要获取数据库实例。通过调用 `uniCloud.database()` 方法来获得数据库对象。 ```javascript const db = uniCloud.database(); ``` 此方法返回的对象提供了访问和管理 MongoDB 集合的能力[^3]。 #### 定义集合(表) 定义一个新的集合(即传统关系型数据库中的“表”),可以通过指定名称的方式完成: ```javascript db.collection('users') // 假设我们正在创建一个名为 'users' 的新集合 ``` 这里 `'users'` 是要创建的新集合的名字,在实际应用中可以根据需求替换为其他合适的名称。 #### 字段设置 对于每一个文档(相当于一行记录),字段代表列名及其对应的值。MongoDB 强制规定固定的模式(schema),但是建议开发者明确定义好每条记录应该包含哪些属性以及这些属性的数据类型。这有助于保持数据的一致性和可预测性。 例如,如果想要存储用户信息,则可以考虑如下字段配置: | Field Name | Description | Data Type | |------------|----------------------|-----------| | `_id` | 自动生成唯一标识符 | ObjectId | | `username` | 用户登录账号 | String | | `email` | 注册邮箱 | String | | `password` | 加密后的密码哈希值 | String | | `created_at` | 记录创建时间戳 | Date | 注意:虽然 MongoDB 支持动态模式,但在生产环境中通常会使用验证规则或第三方库如 Mongoose 来确保一致性[^1]。 #### 添加索引优化查询性能 当涉及到频繁读取特定条件下的大量数据时,合理地建立索引能够显著提高检索效率。可以在创建集合之后立即为其添加必要的索引项。 ```javascript await db.collection('users').createIndex({ email: 1 }, { unique: true }); // 对于用户的电子邮件地址建立了升序排列的唯一键索引 ``` 上述命令表示针对 `email` 字段创建了一个唯一的升序索引,从而防止重复注册相同的电子信箱,并加快基于该字段查找的速度。 #### 插入初始数据 最后一步就是向刚刚创建好的集合里插入一些测试性的样本数据以便后续调试程序逻辑。 ```javascript await db.collection('users').add({ username: "testUser", email: "example@example.com", password: "$2b$10$Ddd...", created_at: new Date() }); ``` 这段代码片段展示了如何利用 `.add()` 函数往 `users` 集合内新增一条完整的用户资料记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸虾米_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值