How to use direct lambda resolver in appsync?

Viewed 22

I have tried to use direct lambda resolver with appsync schema and trying to get items from dynamoDB table but getting error. I can see the results in cloudwatch log but I can't get the result in query page.

One other question that my post has @hasMany comments and comments @belongsTo post how can I get the comments directly with post using direct lambda resolver. I think I have to do a separate query for comments? Appsync pipeline is good at getting queries but it is very very slow.

My lambda function:

const AWS = require("aws-sdk");

const dynamo = new AWS.DynamoDB.DocumentClient();
exports.handler = async (event) => {
 
 const response = await dynamo.get({
            TableName: "Post-xxxxxxxxxxxxx",
            Key: {
               id: event.arguments.id
            }
          }).promise();
          console.log(response);  // I can see the response here in cloudwatch.
    return JSON.stringify(response);
};

My query :

query MyQuery {
  getPost(id: "xxxxxx-xxxxx-xxxx-xxxxxxx") {
    id
    title
  }
}

Query result:

{
  "data": {
    "getPost": null
  },
  "errors": [
    {
      "path": [
        "getPost",
        "id"
      ],
      "locations": null,
      "message": "Cannot return null for non-nullable type: 'ID' within parent 'Post' (/getPost/id)"
    },
    {
      "path": [
        "getPost",
        "title"
      ],
      "locations": null,
      "message": "Cannot return null for non-nullable type: 'String' within parent 'Post' (/getPost/title)"
    }
  ]
}
0 Answers
Related