我是相当新的境界,我试图找出我的REST API之间的相互作用正确的设计,并存储到境界的对象。到目前为止,我有一个Animal
物体看起来像如下:两个连接关系对象
class Animal: Object, Mappable {
dynamic var id = ""
dynamic var userId = ""
dynamic var name = ""
dynamic var gender = ""
dynamic var breed: Breed?
dynamic var type: Type?
//extra
var mainPhotoIndex = 0
override static func primaryKey() -> String? {
return "id"
}
required convenience init?(map: Map) {
self.init()
}
}
但问题是,我不知道我该怎么处理Type
和Breed
关系,因为类型包括所有的品种,这意味着名单中为了检索与相应的品种名称的动物,并键入名字,我将不得不填充在服务器端这两个属性,这将使JSON对象巨大的时候我的动物对象上只需要检索Type
的两个名字和Breed
。我发现的另一种方法是保存String
ObjectId,然后在领域数据库中通过该ID进行筛选,但不确定这是否是最佳做法。那么我需要在服务器端传递什么信息?我应该如何设计我的动物领域对象?
类型
class Type: Object, Mappable {
dynamic var id = ""
dynamic var name = ""
var breeds = List<Breed>()
override static func primaryKey() -> String? {
return "id"
}
required convenience init?(map: Map) {
self.init()
}
}
品种
class Breed: Object, Mappable {
dynamic var id = ""
dynamic var name = ""
override static func primaryKey() -> String? {
return "id"
}
required convenience init?(map: Map) {
self.init()
}
}
你的类定义是正确的。为了解决巨大的JSON问题,当您向/从服务器发布/检索它时,您可以为Type和Breed提供一个ID。 所有类型和品种已经坚持本地数据库从你的/端点类型,这样你就可以通过ID,创建一个特定的动物时找回它们,并将它们分配为您的动物的属性。 –
我想过那只是不确定保存身份证的字符串是在领域的良好做法 –
为什么要保存为字符串呢?整数可能是正确的选择 –