在应用架构Guidelines之后,我想使一些通用数据在我的按需领域内保持同步。
作为一个简单的例子:
/commonRealm
/~/driverRealm
以下是该应用的最小架构
const CarSchema = {
name: 'Car',
primaryKey: 'id',
properties: {
id: {type: 'string'},
make: {type: 'string'},
model: {type: 'string'}
}
};
const TripSchema = {
name: 'Trip',
primaryKey: 'id',
properties: {
id: {type: 'string'},
name: {type: 'string'},
car: {type: 'Car'}
}
};
commonRealm仅包含CarSchema。 driverReam包括CarSchema和TripSchema。汽车永远不会被驾驶员更新,目的实际上是为了查找。
我找不到如何使汽车在各个领域之间保持同步,以便commonRealm中的所有更新都传播到驾驶员的driverRealm的示例。
使用subscribe()监听commonRealm Cars对象没有帮助,因为您无法访问已删除的数据等。
根据我可以从文档中推断出的内容,其架构实际上应该类似于:
const CarSchema = {
name: 'Car',
primaryKey: 'id',
properties: {
id: {type: 'string'},
make: {type: 'string'},
model: {type: 'string'}
}
};
const TripSchema = {
name: 'Trip',
primaryKey: 'id',
properties: {
id: {type: 'string'},
name: {type: 'string'},
carId: {type: 'string'} // foreign key
}
};
commonRealm将包含CarSchema,driverReam将仅包含TripId ,其中carId作为Car.id的类型字符串-而不是Car的 type 。客户端可以运行一个地图/循环来从commonRealm手动加入Car,例如:
let tripsWithCar = [];
trips.forEach(trip => {
trip.car = commonRealm.objects('Car').filtered(`id == "${trip.carId}"`)[0];
tripsWithCar.push(trip);
});
如果这是正确的方法,我想从开发者那里获得更多经验的反馈。