使用Dynamodb通过AWS Appsync解析程序自动添加时间戳

时间:2018-05-04 04:28:17

标签: amazon-web-services amazon-dynamodb aws-appsync

我在创建帖子时尝试自动添加时间戳。 但它并不适用于appsync resolver-context-reference的例子。

  

https://docs.aws.amazon.com/appsync/latest/devguide/resolver-context-reference.html#time-helpers-in-util-time

{
    "version" : "2017-02-28",
    "operation" : "PutItem",
    "key": {
        "id" : $util.dynamodb.toDynamoDBJson($util.autoId())
    },

    #set( $myfoo = $util.dynamodb.toMapValues($ctx.args) )
    #set( $myFoo.version = $util.dynamodb.toNumber(1) )
    #set( $myFoo.timestamp = $util.time.nowISO8601() )

    "attributeValues" : $util.toJson($myFoo)
}

3 个答案:

答案 0 :(得分:4)

这是您要查看的内容的一个有效示例(取自我的AppSync API解析程序)。注意" messageId"和" createdDate"属性。这就是如何在写入DDB时添加日期。

$$ se(P_i) = P_i \sqrt{\sum^i_{j=1} ( \frac{q_j}{r_j p_j})} $$

答案 1 :(得分:3)

将解析器更改为以下

{
    "version" : "2017-02-28",
    "operation" : "PutItem",
    "key": {
        "id" : $util.dynamodb.toDynamoDBJson($util.autoId())
    },

    #set( $myfoo = $util.dynamodb.toMapValues($ctx.args) )
    #set( $myFoo.version = $util.dynamodb.toNumber(1) )
    #set( $myFoo.timestamp = $util.dynamodb.toDynamoDB($util.time.nowISO8601()) )

    "attributeValues" : $util.toJson($myFoo)
}

请注意更改将$util.time.nowISO8601()$util.dynamodb.toDynamoDB()

的呼叫包裹起来

答案 2 :(得分:1)

对于dynamoDB,String应通过$util更改为dynamodb类型。因此,将时间字符串更改为dynamoDB类型后,它将起作用。

#set( $myFoo.timestamp = $util.time.nowISO8601() )
=>  
#set( $myFoo.timestamp = $util.dynamodb.toDynamoDB($util.time.nowISO8601())