Aqueduct - 如何在我的后端保存没有用户 ID 的客户数据
Aqueduct - How to save client data without the user ID in my backend
当我不知道用户的用户 ID 时,如何为用户保存数据?我想将它保存在我的 Aqueduct 后端,以便我可以保护和查询当前用户数据?
@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);
}
当您创建新用户时,Aqueduct 会自动生成一个用户 ID。该 ID 与用户的登录凭据或访问令牌相关联。
在您的示例中,用户在数据模型中传入了一些数据:
@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);
}
问题是用户不知道自己的 ID,所以 newData
中没有。
假设你有路由protected with an Authorizer,那么你可以这样获取用户ID:
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);
}
顺便说一句,由于您要将插入的数据返回给用户,因此它会包含 userId。
当我不知道用户的用户 ID 时,如何为用户保存数据?我想将它保存在我的 Aqueduct 后端,以便我可以保护和查询当前用户数据?
@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);
}
当您创建新用户时,Aqueduct 会自动生成一个用户 ID。该 ID 与用户的登录凭据或访问令牌相关联。
在您的示例中,用户在数据模型中传入了一些数据:
@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);
}
问题是用户不知道自己的 ID,所以 newData
中没有。
假设你有路由protected with an Authorizer,那么你可以这样获取用户ID:
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);
}
顺便说一句,由于您要将插入的数据返回给用户,因此它会包含 userId。