属性不能包含空字符串



我正在解析一个CSV文件,并将数据放入AWS DynamoDB的表中。

就目前情况而言,我得到了以下错误:

One or more parameter values were invalid: An AttributeValue may not contain an empty string

在将数据放入表之前。数据正在被上传到桌面上,但在向我发送一百万次错误之前。

我的代码:

var csv = require("fast-csv");
csv.fromPath(file, {
        headers: true,
        ignoreEmpty: true
    })
    .on("data", function(data) {
        for (var key in data) {
            if (data.hasOwnProperty(key)) {
                if (data[key] === "" || data[key] === undefined || data[key] === null) {
                    data[key] = "N/A";
                }
            }
            params = {
                TableName: tableName,
                Item: {
                    RefID: {
                        S: data["Ref-ID"]
                    },
                    //lots of other data
                }
            };
            dynamodb.putItem(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));
                }
            });
        }
    })
    .on("end", function() {
        console.log("done");
    });

正如您所看到的,为了解决这个问题,我正在将任何可能的空字符串转换为==N/A。有什么想法吗?

编辑:

当它应该显示它在表中的内容时,这就是undefined

console.log("Added item:", JSON.stringify(data[key], null, 2));

编辑2:更改了此代码。。。

dynamodb.putItem(params, function(err, data)

到此:

dynamodb.putItem(params, function(err, info)

我仍然有错误,但现在可以正确显示表格了。

此时的dyneDB似乎不允许空字符串。我不明白为什么,但到目前为止,您不能不存储"Key"的属性:"。

请向亚马逊投诉。key="和key=null是非常不同的用例,是必需的。

尝试对param.Item对象进行字段验证,以验证所有设置是否正确;并找到困扰您的控制台的errornous字段。

var tableName = "wombat_habitats";
var data = {
    "Ref-ID": "Charlie"
};
params = {
  TableName: tableName,
  Item: {
    RefID: {
      S: data["Ref-ID"]
    },
    SomethingElse: {
      S: data["Bad-Key"]
    }
    //lots of other data
  }
};
for(var itemKey in params.Item) {
    for(var itemAttr in params.Item[itemKey]) {
    var value = params.Item[itemKey][itemAttr];
    if(value === undefined || value === "") {
        console.log("item", itemKey, "of type", itemAttr, "is undefined!")
    }
  }
}

相关内容

  • 没有找到相关文章

最新更新