Акведук автоматически генерирует идентификатор пользователя при создании нового пользователя. Этот идентификатор связан с учетными данными пользователя или токеном доступа.
В данном примере пользователь передал некоторые данные в модели данных:
@Operation.post()
Future<Response> addData(@Bind.body(ignore: ['id']) Data newData) async {
final query = Query<Data>(context)..values = newData;
final insertData = await query.insert();
return Response.ok(insertData);
}
Проблема заключается в том, что пользователь не сделал не знают свой собственный идентификатор, поэтому он отсутствует в newData
.
Если предположить, что у вас есть маршрут , защищенный с помощью авторизатора , то вы можете получить идентификатор пользователя следующим образом:
final userID = request.authorization.ownerID;
Таким образом, вы можете использовать его так:
@Operation.post()
Future<Response> addData(@Bind.body(ignore: ['id']) Data newData) async {
final userID = request.authorization.ownerID;
final query = Query<Data>(context)
..values.id = userId
..values.something = newData.something
..values.another = newData.another;
final insertData = await query.insert();
// if insert was successful then...
return Response.ok(insertData);
}
Кстати, поскольку вы возвращаете вставленные данные пользователю, он будет включать в себя идентификатор пользователя. Однако клиенту это не нужно.