gpt4 book ai didi

dart - Aqueduct -如何在没有后端用户ID的情况下保存客户端数据

转载 作者:行者123 更新时间:2023-12-03 03:35:13 24 4
gpt4 key购买 nike

不知道用户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与用户的登录凭据或访问 token 相关联。

在此处的示例中,用户在数据模型中传递了一些数据:

@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中缺少该ID。

假设您具有路线 protected with an Authorizer,那么您可以像这样获得用户标识:
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。 The client shouldn't need that, though.

关于dart - Aqueduct -如何在没有后端用户ID的情况下保存客户端数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61526061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com