Dynamo DB 查询通过 axios 失败,“tableName”处的值为 null 未能满足约束

发布时间:2021-03-08 10:06

我通过 INDEXDynamoDB 查询,从 API Gateway 请求成功,Postman,但是通过 200 OK(在 Axios }} 客户端)代码(从 VueJS 导出)失败并显示以下错误:

Postman

以下是失败的 {"__type":"com.amazon.coral.validate#ValidationException","message":"1 validation error detected: Value null at 'tableName' failed to satisfy constraint: Member must not be null"} 代码,它由 Axios 生成(只是稍作修改以隐藏 URL):

Postman

是否有 let url = 'local/api/prospect' var data = JSON.stringify({ "TableName":"my-table", "ExpressionAttributeNames":{"#lang":"LANGUAGE"}, "ExpressionAttributeValues":{ ":m":{"S":"Acet"}, ":c":{"S":"CH"}, ":l":{"S":"DE"}}, "FilterExpression":"begins_with(MAT_DESC, :m) and COUNTRY = :c and #lang = :l" }); var config = { method: 'post', url: url, headers: { 'Content-Type': 'application/json' }, data: data } this.$axios(config) 在内部执行的某些操作可能导致此请求成功但生成的 Postman 请求不包括?

更新

我不知道为什么会这样,但是这段代码似乎已经解决了问题...

NodeJS

如果有人能明确地告诉我这是为什么,请在下面回答。

回答1

这归结为请求的格式。以下是格式化数据的正确方法:

  var data = JSON.stringify({
    TableName: 'prospect-materials',
    ExpressionAttributeNames: {'#lang':'LANGUAGE'},
    ExpressionAttributeValues:{
      ':m':{S:'Acet'},
      ':c':{S:'CH'},
      ':l':{S:'DE'}},
    FilterExpression: 'begins_with(MAT_DESC, :m) and COUNTRY = :c and #lang = :l'
  })