Ama*_*day 0 lambda amazon-web-services aws-lambda
这是交易:
我无法将数据添加到DynamoDB.JS文件在S3中,这是代码:
var date = new Date(),
item = {
'id': {N: date.getTime()},
'user': {S: "Sam"}
},
params = {
TableName: 'users',
Item: item
};
dynamodb.putItem(params,function(err,data){
if (err) {
console.log(err);
} else {
console.log("user added to DynamoDB");
}
});
Run Code Online (Sandbox Code Playgroud)
这是来自DB的截图,这意味着id应该是一个数字,而不是字符串:
我得到的错误:
错误:预期params.Item ['id'].N是一个字符串
Run Code Online (Sandbox Code Playgroud)at ParamValidator.fail (aws-sdk.js:96666) at ParamValidator.validateType (aws-sdk.js:96827) at ParamValidator.validateString (aws-sdk.js:96762) at ParamValidator.validateScalar (aws-sdk.js:96742) at ParamValidator.validateMember (aws-sdk.js:96709) at ParamValidator.validateStructure (aws-sdk.js:96690) at ParamValidator.validateMember (aws-sdk.js:96703) at ParamValidator.validateMap (aws-sdk.js:96729) at ParamValidator.validateMember (aws-sdk.js:96707) at ParamValidator.validateStructure (aws-sdk.js:96690)
Raf*_*ael 13
我自己就是这个问题.
Dynamo期望"N"值是一个字符串,它有点误导,因为你希望传递一个数字.
你有date.getTime()的地方,试着把它翻译成一个字符串.
'id': { N: date.getTime().toString() },
Run Code Online (Sandbox Code Playgroud)
这对我有用.
即使您想将值保存为DynamoDB 中的数字,您仍然需要向SDK发送一个字符串,因此,您需要:
var date = new Date(),
item = {
'id': {N: date.getTime().toString()},
'user': {S: "Sam"}
},
params = {
TableName: 'users',
Item: item
};
dynamodb.putItem(params,function(err,data){
if (err) {
console.log(err);
} else {
console.log("user added to DynamoDB");
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3066 次 |
| 最近记录: |