Метод ObjectifyService.init () не определен

Если вы выполнили базовую авторизацию и использовали стандартную модель Vapor User, у вас будет уникальный идентификатор для каждого авторизованного пользователя. Затем вам просто нужно добавить это как внешний ключ к каждой модели, содержащей данные, которые вы хотите защитить. Когда пользователь отвечает на вопросы, убедитесь, что вы сохранили идентификатор пользователя для текущего пользователя в полях внешнего ключа. Затем, когда вы хотите получить личные данные пользователя, вы просто выбираете те записи, которые соответствуют одному и тому же идентификатору пользователя.

Чтобы создать таблицу в базе данных, поместите это в модель:

extension ExampleModel: Migration
{
    public static func prepare(on connection: MySQLConnection) -> Future<Void> {
        return Database.create(self, on: connection) { builder in
            try addProperties(to: builder)
            builder.reference(from: \.userId, to: \User.id)
        }
    }
}

Когда я создаю новую (приватную) запись, я передаю идентификатор текущего пользователя в качестве параметра функции init, таким образом:

init(user:User) throws
{
    createdByUserId = user.id!
    // initialise the remaining fields as well
}

Чтобы ограничить записи в маршруте только теми, созданный пользователем, я использую:

events.get("/")
{
    req -> Future<View> in
    let query = try Event.query()
    query.filter(\.userID == theUserId )            
    // the rest of your route
}
0
задан Federico Grandi 20 January 2019 в 17:37
поделиться

1 ответ

Вы почти наверняка включили неправильную версию Objectify в свой путь к классам. Убедитесь, что присутствует только версия v6.

0
ответ дан stickfigure 20 January 2019 в 17:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: