关系模式
13 分
本指南解释了如何在 Back4app 上使用关系模式,包括创建相关类和使用 Parse Server 执行高效查询。您将学习如何有效地使用 Pointers 和 Relations,以及实际示例。
什么是关系模式?
关系模式将数据组织成不同的类,并相互连接。在 Parse Server 中,这些关系通过以下方式管理:
- Pointers: 直接引用单个对象。
- Relations: 管理多个连接(多对多关系)。
这些工具使您能够高效且一致地执行复杂查询。
目标
在本指南结束时,您将能够:
- 使用 Pointers 和 Relations 创建类之间的关系。
- 执行关系查询以检索连接的数据。
- 优化您的模式以获得更好的性能。
先决条件
1 - 创建相关类
实际示例: 州和城市
想象一下,您想要建模一个城市与州相关联的系统:
- 类 State 具有字段 state_name.
- 类 City 具有字段 city_name 和一个 指针 指向 State.
创建类和关系
async function createStateAndCity() {
try {
// Create a State
const State = Parse.Object.extend('State');
const california = new State();
california.set('state_name', 'California');
const savedState = await california.save();
console.log(`State created with objectId: ${savedState.id}`);
// Create a City with a pointer to State
const City = Parse.Object.extend('City');
const losAngeles = new City();
losAngeles.set('city_name', 'Los Angeles');
losAngeles.set('state', savedState);
const savedCity = await losAngeles.save();
console.log(`City created with objectId: ${savedCity.id}`);
} catch (error) {
console.error('Error creating state and city:', error.message);
}
}
createStateAndCity();2 - 查询相关数据
现在数据已经相关,您可以执行查询以检索它。
示例 1: 获取特定州的城市
# Query State:
curl -X GET \
-H "X-Parse-Application-Id: YOUR_APP_ID" \
-H "X-Parse-REST-API-Key: YOUR_REST_API_KEY" \
"https://parseapi.back4app.com/classes/State?where={\"state_name\":\"California\"}"
# Query Cities:
# Replace STATE_OBJECT_ID with the objectId from the state query.
curl -X GET \
-H "X-Parse-Application-Id: YOUR_APP_ID" \
-H "X-Parse-REST-API-Key: YOUR_REST_API_KEY" \
"https://parseapi.back4app.com/classes/City?where={\"state\":{\"__type\":\"Pointer\",\"className\":\"State\",\"objectId\":\"STATE_OBJECT_ID\"}}"示例 2: 查询与城市相关的州
创建一个查询,返回与任何城市相连的州:
curl -X GET \
-H "X-Parse-Application-Id: YOUR_APP_ID" \
-H "X-Parse-REST-API-Key: YOUR_REST_API_KEY" \
"https://parseapi.back4app.com/classes/City?where={\"state\":{\"$inQuery\":{\"className\":\"State\"}}}&include=state"最佳实践
要有效地使用 Parse Server 在 Back4App 中处理关系模式,请遵循以下最佳实践,以确保性能、可维护性和可扩展性:
选择正确的关系类型
- 使用指针 来表示 一对一关系, 例如将用户与其个人资料链接。
- 使用关系 来表示 多对多关系, 例如将一个项目链接到多个任务。
高效查询
- 使用 .include() 在同一查询中加载相关数据,减少多次请求的需要。
- 限制结果 使用 limit() 和 skip() 以避免一次获取大量数据集。
- 索引经常查询的字段 以加快搜索速度。
避免过度嵌套
- 保持查询扁平化 以减少复杂性并提高性能。仅在必要时使用嵌套查询。
将复杂查询卸载到云代码
- 对于 涉及多个关系的复杂查询 或大型数据集,将这些卸载到 云代码 以保持客户端轻量和响应迅速。
结论
在本指南中,您学习了如何在 Back4app 上创建类之间的关系并查询相关对象。继续探索 特定 SDK 文档 以深入了解更多内容!