通过NodeJS将对象保存到DynamoDB实例

Saving an object to DynamoDB instance via NodeJS

本文关键字:DynamoDB 实例 保存 对象 NodeJS 通过      更新时间:2023-09-26

我觉得我错过了一些明显的东西,但是文档对于DynamoDB来说有点令人困惑,特别是对于NodeJS(但是我确实看到了很多Java !)。

我已经做了相当多的搜索,只发现了有关旧SDK的问题,所以希望这不是一个重复的问题!

我试图将Javascript对象存储到我的DynamoDB实例中。下面列出了我得到的错误和我使用的代码。

错误:

Unable to add item. Error JSON: {
    "message": "One or more parameter values were invalid:
       Type mismatch for key File expected: S actual: M",
    "code": "ValidationException",
    "time": "2016-10-29T19:36:02.317Z",
    "requestId": [removed],
    "statusCode": 400,
    "retryable": false,
    "retryDelay": 0
}
代码:

var aws = require('aws-sdk');
var docClient = new aws.DynamoDB.DocumentClient({
    "accessKeyId": AWS_ACCESS_KEY_ID,
    "secretAccessKey": AWS_SECRET_ACCESS_KEY,
    region: 'us-east-1',
    endpoint: "https://dynamodb.us-east-1.amazonaws.com"
});
var tableName = AWS_TABLE_NAME;
var params = {
    TableName: tableName,
    Item: {
        ProjID: projID,
        File: {
            name: fileName,
            url: fileUrl
        }
    }
};
docClient.put(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));
    }
    callback(true);
});

再一次,我确信这是一个相当简单的问题-我只是没有找到任何文档来帮助我更新。

提前感谢你能给的任何帮助!

File是表模式中的属性吗?如果它是,并且它被定义为String,那么您得到的错误只是表明您试图将映射放入字符串属性中。

DynamoDB只支持String和Numeric键,所以你必须重新设计。也许您可以将File信息存储为键的字符串,然后在需要时将其扩展为映射到单独的属性。