2017-01-25 1 views
1

Ich mache Chat-Backend und ich brauche Nachrichten History-Tabelle, die zwei Benutzer enthalten wird.Zwei gleiche Eltern in einer Einheit

Ist es eine Möglichkeit, so etwas richtig zu machen?

static func prepare(_ database: Database) throws { 
    try database.create("historys") { history in 
     history.id() 
     history.parent(User.self, optional: false) 
     history.parent(User.self, optional: false) 
    } 
} 

nun einen Fehler von mehreren User_id Felder Ich erhalte.

Antwort

1

Es sollte wirklich möglich sein, den Feldnamen in Ihrer Vorbereitung einzustellen; Dies wäre eine nützliche Verbesserung. In der Zwischenzeit können Sie jedoch denselben Effekt erzielen, indem Sie ein Feld int erstellen.

static func prepare(_ database: Database) throws { 
    try database.create("historys") { history in 
     history.id() 
     history.int("sender_user_id", optional: false) 
     history.int("recipient_user_id", optional: false) 
    } 
} 

In Ihrem Modell finden Sie Eigenschaften haben senderUserId: Node und recipientUserId: Node, und Sie werden sie wie zum Beispiel initialisieren senderUserId = try Node.extract("sender_user_id"). unter Verwendung der folgenden vereinfachten Methoden auf dem Modell

Sie können dann jede Beziehung holen:

func sender() throws -> Parent<User> { 
    return try parent(senderUserId) 
} 
func recipient() throws -> Parent<User> { 
    return try parent(recipientUserId) 
} 
Verwandte Themen