gpt4 book ai didi

aws-amplify - 使用 DataStore 的 AWS FlutterAmplify

转载 作者:行者123 更新时间:2023-12-04 03:33:27 25 4
gpt4 key购买 nike

我们如何通过查询获取用户对话。理想的做法是查询用户表并加载所有用户对话。示例:

final user = await Amplify.DataStore.query(User.classType, where: User.ID.eq(id))

user.conversations 加载对话列表。

如果无法做到这一点,下一步就是获取具有特定用户的所有对话。示例不工作:

await Amplify.DataStore.query(UserConversation.classType
where: UserConversation.USER.eq(user.id)
)

type Message @model @auth(rules: [{allow: public}]) {
id: ID!
ConversationId: Conversation @connection
UserId: User @connection
body: String
createdDate: AWSDateTime!
}

type Conversation @model @auth(rules: [{allow: public}]) {
id: ID!
date: AWSDateTime
readBy: [ReadBy] @connection(keyName: "byConversation", fields: ["id"])
users: [UserConversation] @connection(keyName: "byConversation", fields: ["id"])
name: String
image: String
}

type ReadBy @model @auth(rules: [{allow: public}]) @key(name: "byConversation", fields: ["conversationID"]) {
id: ID!
date: AWSDateTime
RedByUsers: User @connection
conversationID: ID
}

type User @model @auth(rules: [{allow: public}]) {
id: ID!
firstName: String
lastName: String
userImg: String
createdDate: AWSDateTime
updatedDate: AWSDateTime
email: AWSEmail
conversations: [UserConversation] @connection(keyName: "byUser", fields: ["id"])
}

type UserConversation @model(queries: null) @key(name: "byUser", fields: ["userID", "conversationID"]) @key(name: "byConversation", fields: ["conversationID", "userID"]) @auth(rules: [{allow: public}, {allow: public}]) {
id: ID!
userID: ID!
conversationID: ID!
user: User! @connection(fields: ["userID"])
conversation: Conversation! @connection(fields: ["conversationID"])
}

最佳答案

我能够通过执行以下操作获得第二个版本:

await Amplify.DataStore.query(UserConversation.classType
where: User.ID.eq(user.id)
);

上面的代码将选择用户 ID 等于 user 变量 ID 的所有用户对话。起初对于为什么需要为查询传递 User.ID 有点困惑,但据我了解,这是由于 AWS DataStore 创建 SQL 查询的方式,它在幕后进行连接并且因此将使用第二个表(在本例中为 User 表)的列来执行连接。我希望我能指出一些关于此的文档,但我找不到任何文档。我有点幸运地尝试了一堆东西并在错误消息中注意到 SQL 查询是如何生成的。

关于aws-amplify - 使用 DataStore 的 AWS FlutterAmplify,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67416965/

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