如何在Dynamodb中定义属性类型?

时间:2018-11-27 07:26:11

标签: amazon-web-services amazon-dynamodb dynamo-local dynamodb-queries

我要存储的数据属性是threadId,threadType(sms,livechat,fb),createat和updateat我如何定义threadType我遵循此过程,但输出显示了所有threadType类型?

以及如何确定时间?这是手动输入,有什么方法可以获取系统时间?

var doClient = new AWS.DynamoDB.DocumentClient();
  var DynamoDB = new AWS.DynamoDB({});

  var table = "thread";

  var threadId = "3";
  var threadType = "livechat";
  var createDate = "11:38";
  var updateDate = "12:00";
  var channelName = "three";

  var params = {
      TableName : table,
      Item: 
      {
        "threadId" : threadId,
        "threadType" : { "SS": ["sms", "livechat" ,"fb"] },
        "createDate" : { 'S' : createDate },
        "updateDate" : { 'S' : updateDate },
        "channelName" :{'S' : channelName }
      }      
  };


  console.log("Adding a new item...");
  doClient.put(params, function(err, data) {
      if (err) {
          console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2));
      } else {
          console.log("Added item:", JSON.stringify(data, null, 2));
      }
  });

我只需要在线程类型的结果中显示实时聊天,因为在此插入中,我需要实时聊天

1 个答案:

答案 0 :(得分:1)

看起来您正在将threadType建模为StringSet,这意味着它可以包含多个值。如果您只想存储“ livechat”,则只需将此值存储为字符串即可。 DynamoDB没有服务器端验证或对Enums的支持的概念,尽管有些SDK可以做到-在node.js中没有Enum类型。至于系统时间,无法要求DynamoDB为您插入系统时间。大多数人会插入纪元秒或毫秒作为Number类型以进行排序,并基于客户端的时间戳(应使用NTP),并且在EC2内托管时,它将超级接近DDB队列时间戳。