gpt4 book ai didi

node.js - 如何使用 AWS.DynamoDB.DocumentClient 在 ExpressionAttributeValues 中表达数字类型

转载 作者:太空宇宙 更新时间:2023-11-04 01:36:56 26 4
gpt4 key购买 nike

我正在从 AWS Lambda 对 DynamoDB 表执行查询。使用 AWS.DynamoDB.DocumentClient 时,它似乎无法正确转换“N”数据类型。我收到错误“ValidationException:一个或多个参数值无效:条件参数类型与架构类型不匹配”。当我使用 AWS.DynamoDB 并显式指定“N”类型时,查询有效。两个“事件”值都是字符串。

我更愿意使用 AWS.DynamoDB.DocumentClient。有什么建议么?

--> 不工作

let dynamodb = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});

let params2 = {
TableName: "TABLENAME",
KeyConditionExpression: "#o = :owner and #s = :sortkey",
ExpressionAttributeNames: {
"#o" : "owner",
"#s" : "sortkey
},
ExpressionAttributeValues: {
":owner" : event.userId,
":sortkey" : event.objPartitionKey
}
};
const data = await dynamodb.query(params2).promise();

--> 工作中

    let ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

// configure the dynamoDb query parameters
let params = {
TableName: "TABLENAME",
KeyConditionExpression: "#o = :owner and #s = :sortkey",
ExpressionAttributeNames: {
"#o" : "owner",
"#s" : "sortkey"
},
ExpressionAttributeValues: {
":owner" : {S: event.userId},
":sortkey" : {N: event.objPartitionKey}
}
};
const data = await ddb.query(params).promise();

最佳答案

DynamoDB DocumentClient 使用 javascript 类型来确定要编码到的 DynamoDB 类型。我只能假设 event.objPartitionKey 是一个 javascript 字符串。它需要是一个 JavaScript 数字才能正确编码到 dynamoDB“N”类型字段。要使第一个代码片段正常工作,请首先使用以下方法将 event.objPartitionKey 转换为数字: parseInt(event.objPartitionKey)

请参阅 AWS 文档以了解 DocumentClient 如何将 JS 类型编码为 dynamodb 类型: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html

关于node.js - 如何使用 AWS.DynamoDB.DocumentClient 在 ExpressionAttributeValues 中表达数字类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54246389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com