如何解决如何在 Nodejs 中为 DynamoDB PartiQL 指定参数
我想在 NodeJs 中使用 PartiQL 在 DynamoDb 上执行 SELECT 查询,并出现错误。
一个简单的语句没有问题。
const r = await client.send(
new ExecuteStatementCommand({
Statement: `SELECT * FROM Users WHERE userId in ['abcd1234']`
})
)
但是当尝试执行带有参数的语句时,出现错误。
const r2 = await client.send(
new ExecuteStatementCommand({
Statement: `SELECT * FROM Users WHERE userId in ?`,Parameters: [
['abcd1234']
]
})
)
{
"errorType": "ValidationException","errorMessage": "1 validation error detected: Value '[]' at 'parameters' Failed to satisfy constraint: Member must have length greater than or equal to 1","trace": [
"ValidationException: 1 validation error detected: Value '[]' at 'parameters' Failed to satisfy constraint: Member must have length greater than or equal to 1"," at deserializeAws_json1_0ExecuteStatementCommandError (/var/task/node_modules/@aws-sdk/client-dynamodb/dist/cjs/protocols/Aws_json1_0.js:2202:41)"," at processticksAndRejections (internal/process/task_queues.js:97:5)"," at async /var/task/node_modules/@aws-sdk/middleware-serde/dist/cjs/deserializerMiddleware.js:6:20"," at async /var/task/node_modules/@aws-sdk/middleware-signing/dist/cjs/middleware.js:12:24"," at async StandardRetryStrategy.retry (/var/task/node_modules/@aws-sdk/middleware-retry/dist/cjs/defaultStrategy.js:56:46)"," at async /var/task/node_modules/@aws-sdk/middleware-logger/dist/cjs/loggerMiddleware.js:6:22"," at async /var/task/node_modules/@aws-sdk/lib-dynamodb/dist/cjs/commands/ExecuteStatementCommand.js:29:26"," at async Runtime.handler (/var/task/save.js:39:16)"
]
}
有人有任何解决方案吗?
这是完整的代码。
const client = DynamoDBDocumentClient.from(
new DynamoDBClient({})
);
// this works
const r = await client.send(
new ExecuteStatementCommand({
Statement: `SELECT * FROM Users WHERE userId in ['abcd1234']`
})
)
// this gets an error
const r2 = await client.send(
new ExecuteStatementCommand({
Statement: `SELECT * FROM Users WHERE userId in ?`,Parameters: [
['abcd1234']
]
})
)
解决方法
// Before
SELECT * FROM Users WHERE userId in ?
// After
SELECT * FROM Users WHERE userId in '?'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。