【问题标题】:Saving an object to DynamoDB instance via NodeJS通过 NodeJS 将对象保存到 DynamoDB 实例
【发布时间】:2016-10-31 01:43:47
【问题描述】:

我觉得我遗漏了一些明显的东西,但是文档对于 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);
});

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

提前感谢您提供的任何帮助!

【问题讨论】:

    标签: javascript node.js amazon-web-services amazon-dynamodb


    【解决方案1】:

    文件是表架构中的一个属性吗?如果是并且它被定义为字符串,那么您得到的错误只是表明您正在尝试将地图放入字符串属性中。

    DynamoDB 仅支持字符串和数字键,因此您必须重新审视您的设计。也许您可以将文件信息存储为键的字符串,然后根据需要将其作为映射扩展为单独的属性。

    【讨论】:

    • 感谢您的帮助!我最终将 Javascript 对象字符串化,然后将其重新解析为对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多