条件参数类型与架构类型不匹配

维沙拉克什

我在dynamoDB中有一个名为“参与者”的表。我有一个主组合键,其中哈希键为“ UserId”,排序键为“ NoteId”。我想查询属于特定哈希键的所有项目。

现在,如果我使用aws-cli,以下命令将起作用:

aws dynamodb query \
--table-name Contributors \
--key-condition-expression 'UserId = :UserId' \
--expression-attribute-values '{
    ":UserId": {"N":"2"}
}'

但是,当我在Node.js中编写查询时,以下两个param对象都不起作用:

var params = {
    TableName: "Contributors",
    KeyConditionExpression: "#UserId = :UserId",
    ExpressionAttributeNames: {
        "#UserId": "UserId"
    },
    ExpressionAttributeValues: {
        ":UserId": { "N": "2" }
    }
};

或这个:

var params = {
    TableName: "Contributors",
    KeyConditionExpression: "#UserId = :UserId",
    ExpressionAttributeNames: {
        "#UserId": "UserId"
    },
    ExpressionAttributeValues: {
        ":UserId": "2"
    }
};

我收到以下错误:

ValidationException:一个或多个参数值无效:条件参数类型与架构类型不匹配

正确的参数对象应该是什么?

观念探索

下面的代码应该工作。只需给出不带双引号的值即可。DocumentClient会自动解释数据类型。

var docClient = new AWS.DynamoDB.DocumentClient();

var params = {
    TableName: "Contributors",
    KeyConditionExpression: "#UserId = :UserId",
    ExpressionAttributeNames: {
        "#UserId": "UserId"
    },
    ExpressionAttributeValues: {
        ":UserId": 2
    }
};

docClient.query(params, function(err, data) {
    if (err) {
        console.error("Unable to read item. Error JSON:", JSON.stringify(err,
                null, 2));
    } else {
        console.log("GetItem succeeded:", JSON.stringify(data, null, 2));
    }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章