0

I'm using AWS CDK version 2.64.0 to configure AWS AppSync to setup my GraphQL API.

I created my graphql.schema with the following configuration:

type message {
    id_message: String!
    id_collection: String!
    id_user: String!
    created_at: String!
    text: String!
}

type Query {
    getMessages(idCollectionIdUser: String!): [ message! ]
}

And then I used the configuration above to create my GraphQL API using these commands:

const api = new appsync.GraphqlApi(this, 'GraphQLDatabase', {
  name: 'my-graphql-database',
  schema: appsync.SchemaFile.fromAsset(path.join(__dirname, 'schema.graphql')),
  xrayEnabled: true,
});

I also created one dynamodb table (with one global secondary index) using the following commands:

const messageTable = new dynamodb.Table(this, 'MessageTable', {
  partitionKey: {
    name: 'id_message',
    type: dynamodb.AttributeType.STRING,
  },
  tableName: 'message.dynamodb-table',
  removalPolicy: RemovalPolicy.DESTROY,
  billingMode: dynamodb.BillingMode.PAY_PER_REQUEST,
});
messageTable.addGlobalSecondaryIndex({
  indexName: 'id_collection-id_user-created_at-index',
  partitionKey: {
    name: 'id_collection-id_user',
    type: dynamodb.AttributeType.STRING,
  },
  sortKey: {
    name: 'created_at',
    type: dynamodb.AttributeType.NUMBER,
  },
  projectionType: ProjectionType.ALL,
});

Then I added the dynamodb table as datasource for the graphql database:

const messageDataSource = api.addDynamoDbDataSource('messageDataSource', messageTable);

I'm now trying to create a resolver to get all the messages created by the user in a collection with the following code:

messageDataSource.createResolver('QueryGetMessagesResolver', {
  typeName: 'Query',
  fieldName: 'getMessages',
  requestMappingTemplate: appsync.MappingTemplate.dynamoDbQuery(
    appsync.KeyCondition.eq('id_collection-id_user', 'idCollectionIdUser'),
    'id_collection-id_user-created_at-index',
    false,
  ),
  responseMappingTemplate: appsync.MappingTemplate.dynamoDbResultList(),
});

When I test my graph api, I always get this error:

ExpressionAttributeNames contains invalid key: Syntax error; key: "#id_collection-id_user"

What am I doing wrong?

chicco.caste21
  • 345
  • 2
  • 13

0 Answers0