每当我将一个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中的索引之一
您在此处明确创建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()
}