DynamoDB - putItem - 具有嵌套数据类型的地图(NodeJS、aws-sdk)
DynamoDB - putItem - Map with nested data types (NodeJS, aws-sdk)
全部 - 我正在处理特定的业务需求,但缺少有关 Google 的信息,我想我会在这里停下来获取一些信息:
我基本上是在摄取 CSV,将其转换为 JSON 对象并将其填充到 Dynamo 中。有趣的是,行值的数据类型在字符串和数字之间跳转,但我无法让它正常工作。
我正在使用 Node 和 aws-sdk,并直接使用 Amazon Docs 对其进行了测试,但它仍然无法正常工作,请参见下文:
var params = {
TableName: foo,
Item: {
masterReportsUuid: uuidv4(),
reportDate: _eventDate,
"testAttribute": {
"Name": {
"S": "Joe"
},
"Age": {
"N": "35"
}
},
}
};
dbDocClient.put(params, (err, data) => {
if (err) {
//log to CloudWatch
console.log(err);
reject(err);
} else {
resolve(data);
}
});
testAttribute 显然是一个包含姓名和年龄、字符串和数字的映射。这直接来自文档 -
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#putItem-property
地图类型的属性。例如:
"M":{"Name":{"S":"Joe"},"Age":{"N":“35”}}
但是在 Dynamo 中输出是这样的 -
Dynamo Output
所以我的问题是 - 为什么这不起作用?
编辑:错别字。
呃 - 我解决了这个问题。我会把它留在这里以防万一有人遇到这个。
两个问题 - 我使用的是 DynamoDB.DoucmentClient().put API 调用而不是 DynamoDB.putItem 调用,我的参数对象很接近但不正确。请参阅下面的嵌套地图属性类型的工作示例 -
const dbDocClient = new aws.DynamoDB.DocumentClient();
const dbDynamo = new aws.DynamoDB();
var params = {
TableName: _ReportsTable,
Item: {
testUuid: {
"S": uuidv4()
},
testDate: {
"S": _eventDate
},
testAttribute: {
"M": {
"Name": {
"S": "Joe"
},
"Age": {
"N": "35"
}
}
},
}
};
dbDynamo.putItem(params, (err, data) => {
if (err) {
//log to CloudWatch
console.log(err);
reject(err);
} else {
resolve(data);
}
});
全部 - 我正在处理特定的业务需求,但缺少有关 Google 的信息,我想我会在这里停下来获取一些信息:
我基本上是在摄取 CSV,将其转换为 JSON 对象并将其填充到 Dynamo 中。有趣的是,行值的数据类型在字符串和数字之间跳转,但我无法让它正常工作。
我正在使用 Node 和 aws-sdk,并直接使用 Amazon Docs 对其进行了测试,但它仍然无法正常工作,请参见下文:
var params = {
TableName: foo,
Item: {
masterReportsUuid: uuidv4(),
reportDate: _eventDate,
"testAttribute": {
"Name": {
"S": "Joe"
},
"Age": {
"N": "35"
}
},
}
};
dbDocClient.put(params, (err, data) => {
if (err) {
//log to CloudWatch
console.log(err);
reject(err);
} else {
resolve(data);
}
});
testAttribute 显然是一个包含姓名和年龄、字符串和数字的映射。这直接来自文档 -
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#putItem-property
地图类型的属性。例如:
"M":{"Name":{"S":"Joe"},"Age":{"N":“35”}}
但是在 Dynamo 中输出是这样的 -
Dynamo Output
所以我的问题是 - 为什么这不起作用?
编辑:错别字。
呃 - 我解决了这个问题。我会把它留在这里以防万一有人遇到这个。
两个问题 - 我使用的是 DynamoDB.DoucmentClient().put API 调用而不是 DynamoDB.putItem 调用,我的参数对象很接近但不正确。请参阅下面的嵌套地图属性类型的工作示例 -
const dbDocClient = new aws.DynamoDB.DocumentClient();
const dbDynamo = new aws.DynamoDB();
var params = {
TableName: _ReportsTable,
Item: {
testUuid: {
"S": uuidv4()
},
testDate: {
"S": _eventDate
},
testAttribute: {
"M": {
"Name": {
"S": "Joe"
},
"Age": {
"N": "35"
}
}
},
}
};
dbDynamo.putItem(params, (err, data) => {
if (err) {
//log to CloudWatch
console.log(err);
reject(err);
} else {
resolve(data);
}
});