FF5*_*nja 6 javascript csv amazon-web-services amazon-dynamodb
我正在解析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");
});
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在将任何可能的空字符串转换为== N/A,以解决此问题。有什么想法吗?
编辑:
原来是undefined应该显示其在表中的内容。
console.log("Added item:", JSON.stringify(data[key], null, 2));
Run Code Online (Sandbox Code Playgroud)
编辑2:更改此代码...
dynamodb.putItem(params, function(err, data)
Run Code Online (Sandbox Code Playgroud)
...对此:
dynamodb.putItem(params, function(err, info)
Run Code Online (Sandbox Code Playgroud)
我仍然遇到错误,但是现在正确显示了表格。
小智 5
看来 dynamoDB 此时不允许空字符串。我不明白为什么,但截至目前,您不能不存储“Key”:“”的属性。
请向亚马逊投诉。key="" 和 key=null 是非常不同的用例,需要使用。
尝试对您的param.Item对象进行字段验证,以验证一切设置是否正确;并找到困扰您控制台的错误字段。
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!")
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5278 次 |
| 最近记录: |