javascript - 让 JSON 中的数据成为 Dynamodb 中的自己的属性?
问题描述
每当我向我的 dynamodb 调用 post API 时,所有数据都会存储在一个“内容”属性中。有没有办法让 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、content(带有数据对象),创建于。
我希望它显示为 siteId、userId、siteName、siteAddress 等,最后两个是 json 中的索引之一
解决方案
您在content
此处显式创建属性:content: data,
. 您需要像这样显式设置每个属性:
Item: {
userId: event.requestContext.identity.cognitoIdentityId,
siteId: siteIdFinal,
siteName: data.siteName,
siteAddress: data.siteAddress,
createdAt: Date.now()
}
或者,您可以使用对象扩展运算符简化此操作,如下所示:
Item: {
...data,
userId: event.requestContext.identity.cognitoIdentityId,
siteId: siteIdFinal,
createdAt: Date.now()
}
推荐阅读
- html - 为什么在 1440 像素宽度的屏幕上查看时,我的社交媒体页脚图标在屏幕外?
- python - 在多个空格但不是单个空格上拆分字符串
- java - 如果条件为真,我如何每秒自动运行一个按钮,直到 de 条件成立?
- github - 在 /blog 目录中安装 Gatsby
- python - 我的 base 10 或一般代码有什么问题
- java - 如何在 TextView 中压倒自动调整大小?
- javascript - Redux 商店在刷新浏览器时不刷新(清除)
- amazon-web-services - S3 存储桶策略不允许 Athena 执行查询
- php - 根据在 WooCommerce 中选择的运输方式添加费用
- python - 从整数列表中返回元素的索引值