Сделать данные в JSON его собственным атрибутом в Dynamodb? - PullRequest
0 голосов
/ 29 апреля 2019

Всякий раз, когда я вызываю post API для моей динамической базы данных, все данные сохраняются в одном атрибуте «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

1 Ответ

1 голос
/ 29 апреля 2019

Вы явно создаете атрибут 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()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...