簡體   English   中英

AWS Lambda:如何在 Dynamodb 中更新 map 中的項目

[英]AWS Lambda: How to update item in a map in Dynamodb

我想在 lambda function 中聚合期間在我的 Dynamodb 表中增加名為ProvinceDistributionMAP屬性中的項目的值,基於用戶的字段記錄。

表 model:

type submissionsAggregate @model {
  id: String
  totalRecords: Int
  provinceDistribution: provinces
  status: employmentStatus
  females: Int
  males: Int
}
type provinces {
  Sichuan: Int
  Qinghai: Int
  Gansu: Int
  Heilongjiang: Int
  Yunnan: Int
  Hunan: Int
  Shaanxi: Int
  Hebei: Int
  ...
}

用戶記錄:

   {
     "Timestamp": {
        "S": "2016-11-18:12:09:36"
      },
      "province": {
        "S": "Sichuan"
      },
      "gender": {
        "S": "male"
      },
      "employmentStatus": {
        "S": "employed"
      }
   }

我提取了字段值並將其存儲在ExpressionAttributeValues中,希望在更新期間創建指向 MAP( #province )中目標項目的路徑,如下所示

const params = {
    ExpressionAttributeNames: {
      "#total": "totalRecords",
      // "#status": "status",
      "#males": "males",
      "#females": "females",
      "#select": "Sichuan",
      "#province": "provinceDistribution",
    },
    ExpressionAttributeValues: {
      ":inc": 1,
      // ":targetStatus": `#status.${employmentStatus}`,
      ":targetProvince": `#province.${province}`,
      ":maleIncrement": maleIncrement,
      ":femaleIncrement": femaleIncrement,
    },
    Key: {
      id: "statistics1",
    },
    ReturnValues: "ALL_NEW",
    TableName: process.env.TABLE_NAME,
    UpdateExpression:
      "set #province=:targetProvince + :inc, #total=#total+ :inc, #males =#males+:maleIncrement, #females=#females+ :femaleIncrement",
  };

然后我得到這個錯誤:

'無效的UpdateExpression:運算符或function的操作數類型不正確; 運算符或 function:+,操作數類型:S',

主要問題是知道如何動態遍歷 Map。 說省分布.四川,其中“四川”是從用戶記錄中提取的省份,以便在 Map 中增加其值。

任何有關如何實現這一目標的建議將不勝感激。

您的問題set #province=:targetProvince +:inc 您正在嘗試將數字與字符串連接,UpdateExpressions https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html不支持該字符串

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM