在JSON中创建数据是Dynamodb中自己的属性吗?

问题描述 投票:0回答:1

每当我将一个post API调用到我的dynamodb时,所有数据都会存储在一个“content”属性中。有没有办法为JSON结构中的每个属性提供单独的属性?

例如,这里是我调用API的地方,数据的JSON结构在values变量中。

export default (async function submitSite(values) {
  console.log(values);
  createSite(values);
})

function createSite(site) {
  return API.post("sites", "/sites", {
    body: site
  });
}

这是API本身的代码:

export async function main(event, context) {
  const data = JSON.parse(event.body);

  console.log(data);
  var site = "IE"+data.siteCounty+data.siteName;
  var siteIdStripped = site.replace(/[aeiou]/g, '');
  var siteId = siteIdStripped.replace(/ /g,'');
  var siteIdFinal = siteId.toUpperCase();

  const params = {
    TableName: "sites",
    Item: {
      userId: event.requestContext.identity.cognitoIdentityId,
      siteId: siteIdFinal,
      content: data,
      createdAt: Date.now()
    }
  };

当我上传时,它具有结构siteId,userId,内容(带有数据对象),创建于。

我希望它显示为siteId,userId,siteName,siteAddress等等,最后2个是json中的索引之一

javascript reactjs amazon-web-services amazon-dynamodb
1个回答
1
投票

您在此处明确创建content属性:content: data,。您需要显式设置每个属性,如下所示:

Item: {
  userId: event.requestContext.identity.cognitoIdentityId,
  siteId: siteIdFinal,
  siteName: data.siteName,
  siteAddress: data.siteAddress,
  createdAt: Date.now()
}

或者,你可以像object spread operator一样简化这个:

Item: {
  ...data,
  userId: event.requestContext.identity.cognitoIdentityId,
  siteId: siteIdFinal,
  createdAt: Date.now()
}
© www.soinside.com 2019 - 2024. All rights reserved.