我是相當新的境界,我試圖找出我的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,創建一個特定的動物時找回它們,並將它們分配爲您的動物的屬性。 –
我想過那只是不確定保存身份證的字符串是在領域的良好做法 –
爲什麼要保存爲字符串呢?整數可能是正確的選擇 –