1

我制作聊天后端,我需要包含两个用户的消息历史记录表。

有没有办法以正确的方式做类似的事情?

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)
    }
}

现在我收到多个 user_id 字段的错误。

4

1 回答 1

1

确实应该可以在准备中设置字段名称;这将是一个有用的增强。

但是,与此同时,您可以通过创建int字段来获得相同的效果。

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)
    }
}

在您的模型中,您将拥有属性senderUserId: NoderecipientUserId: Node,并将它们初始化为 例如senderUserId = try Node.extract("sender_user_id")

然后,您可以使用模型上的以下便捷方法获取每个关系:

func sender() throws -> Parent<User> {
    return try parent(senderUserId)
}
func recipient() throws -> Parent<User> {
    return try parent(recipientUserId)
}
于 2017-01-25T23:26:55.237 回答