Javascript DynamoDB';createSet';返回';建造商';而不是';设置'; 问题:

Javascript DynamoDB';createSet';返回';建造商';而不是';设置'; 问题:,javascript,webpack,amazon-dynamodb,aws-sdk,aws-sdk-js,Javascript,Webpack,Amazon Dynamodb,Aws Sdk,Aws Sdk Js,正在尝试创建DynamoDB集 var docClient = new AWS.DynamoDB.DocumentClient(); var set = docClient.createSet(["Red", "Green", "Blue"]); console.log(set); “set”的正确日志值: Set {values: Array(3), type: "String"} type: "String" values: ["Red", "Green", "Blue"]

正在尝试创建DynamoDB集

var docClient = new AWS.DynamoDB.DocumentClient();
var set = docClient.createSet(["Red", "Green", "Blue"]);
console.log(set);
“set”的正确日志值:

Set {values: Array(3), type: "String"}
    type: "String"
    values: ["Red", "Green", "Blue"]
    __proto__: Object
我在控制台输出中得到的内容:

constructor {values: Array(3), type: "String"}
    type: "String"
    values: ["Red", "Green", "Blue"]
    __proto__: Object
更新电话:

var params = {
    TableName: "Table",
    Key: {
        "id": id
    },
    UpdateExpression: "ADD colors :c",
    ExpressionAttributeValues: {
        ":c": docClient.createSet(["Red", "Green", "Blue"])
    },
    ReturnValues: "UPDATED_NEW"
}

docClient.update(params, callback);
因为“set”的类型是“构造函数”而不是“set”。我在尝试更新DynamoDB中的集合时遇到以下错误

Error: Invalid UpdateExpression: Incorrect operand type for operator or function; operator: ADD, operator type: MAP
问题: 我真的在寻找导致这种情况的任何线索

我正在使用webpack部署我的应用程序。在开发中运行webpack时,我能够获得正确的值,但在为生产构建webpack时,它表现出不正确的行为


这不一定是AWS的问题。这可能是我缺乏对javascript或网页包的理解。

最终我发现这确实是一个网页包配置问题。我使用的模板包括优化生产代码。事实证明,UglifyJS的默认设置是“mangle”和“compress”。这两个选项都会删除用于代码大小优化的函数名

在我的例子中,这是一个问题,因为DynamoDBSet的构造函数名为Set,而DynamoDBSet是“createSet”调用的。调用docClient.update()时,它需要此函数名,以便了解如何组装DB update参数

无法在webpack.config.js中删除此函数名的修复程序:

plugins: [
  new UglifyJSPlugin({
    uglifyOptions: {
      mangle: {
        keep_fnames: true //Does not optimize function names
      },
      compress: {
        keep_fnames: true //Same as mangle. Both are necessary
      }
  })
]

您的意思是说您成功创建了该集,并且在更新时出现错误?您能显示您的更新项参数吗?因此,为了清楚起见,问题在于开发和生产之间存在差异?@ConceptQuest在开发模式下运行webpack时,它会正确创建一个集合,但在生产模式下构建它时,它会在“构造函数”中创建集合结果。添加了更新项。马特·弗莱彻,是的。问题在于使用webpack开发模式运行应用程序和生产模式之间。@MattFletcher。对在开发模式下使用webpack运行应用程序和生产构建之间存在问题。