AWS DynamoDB DocumentClient可以处理本机Javascript Date对象吗?

时间:2017-04-17 17:59:14

标签: javascript amazon-web-services amazon-dynamodb

我正在使用DocumentClient(http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html)来更轻松地使用DynamoDB。但是,似乎它遇到了Date对象的问题。我知道DynamoDB需要专门格式化Date (as ISO8601 millisecond-precision string, shifted to UTC)的日期。

DocumentClient是不是处理这个问题,还是需要在Date对象上设置一些东西?

目前,我刚刚通过toString()将值转换为字符串。 expires_at值具体为:

这个在DyanmoDB项目中不包括expires_at

{ 
  Item:
  { 
    id: 'session',
    credentials: 
    { 
      access_token: '',
      refresh_token: '',
      token_type: 'Bearer',
      expires_in: 3599,
      expires_at: 2017-04-17T18:48:03.608Z 
    } 
  },
  TableName: 'table' 
}

这个将包含它:

{ 
  Item:
  { 
    id: 'session',
    credentials: 
    { 
      access_token: '',
      refresh_token: '',
      token_type: 'Bearer',
      expires_in: 3599,
      expires_at: 'Mon Apr 17 2017 18:50:24 GMT+0000 (UTC)' 
    } 
  },
  TableName: 'table' 
}

1 个答案:

答案 0 :(得分:2)

DocumentClient只是DynamoDB的抽象层。因此,如果DynamoDB中不支持Date数据类型,则DocumentClient将不支持它。 (见DynamoDB Data Types

您可以使用toISOString()方法传递ISO 8601字符串。例如:

var expires = new Date();
expires.setTime(expires.getTime() + (60*60*1000)); // Add 1 hour.

{ 
  Item:
  { 
    id: 'session',
    credentials: 
    { 
      access_token: '',
      refresh_token: '',
      token_type: 'Bearer',
      expires_in: 3599,
      expires_at: expires.toISOString() 
    } 
  },
  TableName: 'table' 
}