dynamoDb 放置项目不填充所有参数

dynamoDb put item not populating all params

我有 2 个 lambda 执行完全相同的事情,但是,它们都是用不同的语言编写的。

1st lambda - 在 node.js 环境中运行,当我为 putItem 创建参数时,如下所示:

const args = {
          id: "my id",
          __typename: "a type name",
          _version: 1,
          _lastChangedAt: now.toISOString(),
          createdAt: now.toISOString(),
          updatedAt: fields.LastModifiedDate
        }
var recParams = {
        TableName: dynamoTable,
        Key: {
        "id": Id
        },
        Item: args,
        ReturnValues: "ALL_OLD"
      };

然后我使用 docClient 插入行。一切正常,所有属性都填充在我的 dynamo 行中。

我用 Golang 写的完全一样:

    item := RecentItem{
                Id:             "some Id",
                _version:       1,
                __typename: "a type name",
                _lastChangedAt: currentTime.UTC().Format("2006-01-02T15:04:05-0700"),
                createdAt:      currentTime.UTC().Format("2006-01-02T15:04:05-0700"),
                updatedAt:      currentTime.UTC().Format("2006-01-02T15:04:05-0700"),
            }
av, err := dynamodbattribute.MarshalMap(item)
input := &dynamodb.PutItemInput{
        Item:      av,
        TableName: aws.String(tableName),
    }

几乎一切正常,项目已插入,但我缺少除 id 之外的所有属性。

结构声明:

type RecentItem struct {
    Id             string `json:"id"`
    _version       int    `json:"_version"`
    _lastChangedAt string `json:"_lastChangedAt"`
    createdAt      string `json:"createdAt"`
    updatedAt      string `json:"updatedAt"`
}

不确定为什么在 Go 中我的 dynamoDb 行缺少属性。我错过了什么吗?

必须导出 Id 以外的属性,即以大写开头:



type RecentItem struct {
    ID             string `dynamodbav:"id"`
    Version        int    `dynamodbav:"_version"`
    LastChangedAt  string `dynamodbav:"_lastChangedAt"`
    CreatedAt      string `dynamodbav:"createdAt"`
    UpdatedAt      string `dynamodbav:"updatedAt"`
}