我有一个简单的 React/Node 应用程序来创建任务,我希望能够为每个任务添加注释。我可以成功添加和删除任务,但在向任务添加新注释时遇到问题。
我在 DynamoDB 中的数据库架构如下所示:
{
"taskId": "e3b8d901-6d74-4caa-9360-5b2f7aaec513",
"notes": [
{
"noteId": "aeeeeb60-3221-4d4e-b362-d63b48f42fba",
"text": "thing to do next and words",
"status": "TODO"
}
],
"title": "Some Task"
}
这就是我尝试向 notes 数组添加新注释的方式:
function createNote(newNote){
if (!newNote) {
throw new Error('Missing newNote information')
}
return docClient.update({
TableName: 'tasks',
Key: {
'taskId': newNote.taskId
},
UpdateExpression: 'SET #notes = list_append(#notes, :notes)',
ExpressionAttributeNames: {
'#notes': 'notes'
},
ExpressionAttributeValues: {
':notes': [
{
'noteId': uuid(),
'text': newNote.text,
'status': 'TEMP'
}
]
},
ReturnValues: 'ALL_NEW'
}).promise()
.then((res) => {
console.log('Task updated!', res)
return res
})
.catch((error) => {
console.log('Task not updated', error);
throw error
})
}
当我尝试添加新注释时,我收到错误消息: "提供的键元素与架构不匹配">
我从这篇文章中得到了使用list_append的想法:如何使用文档客户端更新dynamodb中的嵌套列表数据
编辑以添加:我也尝试阅读这里的文档,但我不明白该示例(带有所有 --'s(如何适用于我的代码:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html#Expressions.UpdateExpressions.SET.AddingListElements
我的语法有问题吗?
谢谢!
事实证明,我的api.put和createNote函数不匹配。在 api.put 中,我传递了两个参数(查询 id 和请求正文(,但 CreateNote 只接受一个参数。