要使用AWS AppSync获取另一个表的计数,您可以使用AWS Lambda函数来执行此操作。您需要执行以下步骤:
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB.DocumentClient();
exports.handler = async (event) => {
const postId = event.arguments.postId;
const params = {
TableName: 'Likes',
IndexName: 'postIndex',
KeyConditionExpression: 'postId = :postId',
ExpressionAttributeValues: {
':postId': postId
}
};
try {
const result = await dynamodb.query(params).promise();
return result.Count;
} catch (error) {
console.log(error);
throw new Error('Error fetching count');
}
};
在AWS Lambda控制台中创建一个新的Lambda函数,并将上述代码粘贴到函数编辑器中。确保您已配置正确的AWS访问密钥和DynamoDB表信息。
在AWS AppSync控制台中创建一个新的数据源类型为AWS Lambda的数据源,并将其与上述Lambda函数关联。
在AWS AppSync的模式中定义一个新的字段,该字段将使用上述数据源类型的数据源。以下是一个示例模式代码,假设您的帖子类型有一个名为"likesCount"的字段。
type Post {
id: ID!
title: String!
likesCount: Int!
}
type Query {
getPost(id: ID!): Post
}
{
"version": "2017-02-28",
"operation": "Invoke",
"payload": {
"arguments": {
"postId": "$util.toJson($context.source.id)"
},
"version": "2018-05-29"
}
}
请注意,上述示例代码仅用于演示目的,您可能需要根据自己的需求进行相应的调整和修改。