2

我正在开发 AppSync,我正在努力研究如何使用 VTL 在 Dynamo Db 中保存日期。我的实际要求是保存调用 API 的日期。请让我知道如何在 Dynamo Db 中使用 Date.now() 来实现这一点。提前致谢。

4

2 回答 2

0

我通常使用$util.time.nowEpochSeconds()

例如:

#set($input={})
$util.qr($input.put("createdAt", $util.time.nowEpochSeconds()))
$util.qr($input.put("updatedAt", $util.time.nowEpochSeconds()))

#set($id=$util.autoId())

{
    "version" : "2017-02-28",
    "operation" : "PutItem",
    "key" : {
        "id": $util.dynamodb.toDynamoDBJson("$id")
    },
    "attributeValues" : $util.dynamodb.toMapValuesJson($input)
}
于 2019-10-09T21:18:12.013 回答
0

您有几个选项,例如使用 DynamoDb,您可以在映射之前添加属性:

$util.qr($ctx.args.input.put("createdAt", $util.time.nowISO8601()))

{
  "version": "2017-02-28",
  "operation": "PutItem",
  "key": {
    "id": $util.dynamodb.toDynamoDBJson($util.autoId()),
  },
  "attributeValues": $util.dynamodb.toMapValuesJson($ctx.args.input),
  "condition": {
    "expression": "attribute_not_exists(#id)",
    "expressionNames": {
      "#id": "id",
    },
  },
}

格式选项:

$util.time.nowISO8601()                                            : 2018-02-06T19:01:35.749Z
$util.time.nowEpochSeconds()                                       : 1517943695
$util.time.nowEpochMilliSeconds()                                  : 1517943695750
$util.time.nowFormatted("yyyy-MM-dd HH:mm:ssZ")                    : 2018-02-06 19:01:35+0000
$util.time.nowFormatted("yyyy-MM-dd HH:mm:ssZ", "+08:00")          : 2018-02-07 03:01:35+0800
$util.time.nowFormatted("yyyy-MM-dd HH:mm:ssZ", "Australia/Perth") : 2018-02-07 03:01:35+0800

来源:https ://docs.aws.amazon.com/appsync/latest/devguide/resolver-util-reference.html

于 2021-12-28T22:52:14.467 回答