context.succeed for create?
I haven't cloned this repository, so maybe there's just something different from your code and mine that I'm missing, but when I use context.succeed for the create operation, it shows the postId in Postman, but it doesn't actually create the db entry.
Even I am facing this issue
It worked for me. Did you set the permissions to dynamodb?
@luctus I've faced the same problem.
I set theAdministratorAccess policy to the IAM user.
And also modified the s-resources-cf.json: add resources permission to access dynamodb.
It would very helpful if you could tell me what's wrong with my codes,
or let us see how it worked on your project.
I've stuck by this issue for whole day.
btw, I've posted a question on stackoverflow
If I were missing permissions, it would return an error instead of just not doing anything. Everything works fine with context.done, just not with context.succeed.
@AlexMcConnell ! I just figure it out! In the second arguments of the putItem, it should be a callback function, but in the example:
dynamo.putItem(event.payload,context.succeed({"postId":event.payload.Item.postId}));
It's executed inline..
So if we change this into
dynamo.putItem(event.payload, function() {
context.succeed({"postId":event.payload.Item.postId})
});
The context.succeed will be executed after the putItem be done.
:D Hope this may helpful to you!
@abalone0204 I'm kind of new to node, but I was pretty sure that there is no difference between
dynamo.putItem(event.payload,context.succeed({"postId":event.payload.Item.postId}));
and
dynamo.putItem(event.payload, function() {
context.succeed({"postId":event.payload.Item.postId})
});
Am I wrong?
No, they are absolutely different.
dynamo.putItem(event.payload, function() {
context.succeed({"postId":event.payload.Item.postId})
});
It's a function declaration in the second argument,
it will wait for the putItem done then call this function.
As for this:
dynamo.putItem(event.payload,context.succeed({"postId":event.payload.Item.postId}));
context.succeed will be executed in line and return a result to the second argument.
You can check this link to understand the callback style in JavaScript.
Or you can just give a try, you will be suprised that it works.
Btw, you should put some permission into the s-resources-cf.json.
I've created a similar example, you can check my repo, too