如何查询 AWS AppSync 中关注用户的所有帖子
How to query for all posts by followed users in AWS AppSync
我有一个使用 DynamoDB 作为后端的 AWS Appsync 应用程序。我有一个 table 的帖子,每个 post 都有一个原作者的用户名字段。我处于一种情况,我想查询查看他们关注的作者的所有 post。
每个用户可以有多个帖子,每个用户可以关注多个用户。
type Post {
id: ID!
username: String
title: String
content: String
}
type User{
username: String
following: [String]
}
我应该如何构建 DynamoDB 中的 table 和 AppSync 中的 AppSync resolvers/schema 来实现这一点。
type User {
username: String! ## Primary key
posts: [Post]
following: [Following]
}
type Following {
follower: String! ## Primary key
username: String! ## Sort key
posts: [Post]
}
type Post {
username: String! ## Primary key
postID: ID!
title: String
content: String
}
type Query {
getPostsByUsername(username: String!): User
}
schema {
query: Query
}
User.posts解析器:
{
"version": "2017-02-28",
"operation": "Query",
"query": {
"expression": "username = :username",
"expressionValues": {
":username": $util.dynamodb.toDynamoDBJson($context.source.username)
}
}
}
$util.toJson($ctx.result.items)
User.following解析器
{
"version": "2017-02-28",
"operation": "Query",
"query": {
"expression": "follower = :follower",
"expressionValues": {
":follower": $util.dynamodb.toDynamoDBJson($context.source.username)
}
}
}
$util.toJson($ctx.result.items)
Following.posts解析器
{
"version": "2017-02-28",
"operation": "Query",
"query": {
"expression": "username = :username",
"expressionValues": {
":username": $util.dynamodb.toDynamoDBJson($context.source.username)
}
}
}
$util.toJson($ctx.result.items)
Query.getPostsByUsername解析器
{
"version": "2017-02-28",
"operation": "GetItem",
"key": {
"username": $util.dynamodb.toDynamoDBJson($ctx.args.username),
}
}
$util.toJson($ctx.result)
测试
用户表
PostTable
下表
现在我们可以通过用户名查询所有帖子,也可以查询所有好友的帖子。
希望对您有所帮助:)
我有一个使用 DynamoDB 作为后端的 AWS Appsync 应用程序。我有一个 table 的帖子,每个 post 都有一个原作者的用户名字段。我处于一种情况,我想查询查看他们关注的作者的所有 post。
每个用户可以有多个帖子,每个用户可以关注多个用户。
type Post {
id: ID!
username: String
title: String
content: String
}
type User{
username: String
following: [String]
}
我应该如何构建 DynamoDB 中的 table 和 AppSync 中的 AppSync resolvers/schema 来实现这一点。
type User {
username: String! ## Primary key
posts: [Post]
following: [Following]
}
type Following {
follower: String! ## Primary key
username: String! ## Sort key
posts: [Post]
}
type Post {
username: String! ## Primary key
postID: ID!
title: String
content: String
}
type Query {
getPostsByUsername(username: String!): User
}
schema {
query: Query
}
User.posts解析器:
{
"version": "2017-02-28",
"operation": "Query",
"query": {
"expression": "username = :username",
"expressionValues": {
":username": $util.dynamodb.toDynamoDBJson($context.source.username)
}
}
}
$util.toJson($ctx.result.items)
User.following解析器
{
"version": "2017-02-28",
"operation": "Query",
"query": {
"expression": "follower = :follower",
"expressionValues": {
":follower": $util.dynamodb.toDynamoDBJson($context.source.username)
}
}
}
$util.toJson($ctx.result.items)
Following.posts解析器
{
"version": "2017-02-28",
"operation": "Query",
"query": {
"expression": "username = :username",
"expressionValues": {
":username": $util.dynamodb.toDynamoDBJson($context.source.username)
}
}
}
$util.toJson($ctx.result.items)
Query.getPostsByUsername解析器
{
"version": "2017-02-28",
"operation": "GetItem",
"key": {
"username": $util.dynamodb.toDynamoDBJson($ctx.args.username),
}
}
$util.toJson($ctx.result)
测试
用户表
PostTable
下表
现在我们可以通过用户名查询所有帖子,也可以查询所有好友的帖子。
希望对您有所帮助:)