Загрузка JSON объекта с использованием s3.putObject загружает ключ, но не значение - PullRequest
0 голосов
/ 07 января 2020

Я создаю простой json объект и загружаю его в цифровой океан с помощью функции s3.putObject. Нет проблем с загрузкой, но когда я смотрю на него в цифровом океане, в объекте json есть только ключ, а значение показывает {}

Вот код, создающий JSON и выгрузка его:

async function sendErrorData(error){
  var errorfile = {
    'errorLog' : error
  }
  console.log(errorfile)

  const params = {
    Body: JSON.stringify(errorfile),
    Bucket: 'MyBucket'
    Key: 'errors.json',
    ContentType: "application/json"
  };

  await uploadToDO(params)
  .then((data) => console.log(JSON.stringify(data)))
  .catch((err) => console.log(JSON.stringify(err)))

  console.log(errorfile)
}

function uploadToDO(params) {
  return s3.putObject(params).promise()
}

Журналы консоли до и после выгрузки показывают объект отлично, но после загрузки ему не хватает таких значений.

{
    "errorLog": ReferenceError: ....
}

Загружен :

{
    "errorLog": {}
}

Ответы [ 2 ]

0 голосов
/ 07 января 2020

Вы awaiting при вызове функции uploadToDO(params). Но функция uploadToDO не определена как асинхронная c функция.

она должна быть:

async function uploadToDO(params) {
  return s3.putObject(params).promise()
}

Надеюсь, это поможет.

0 голосов
/ 07 января 2020
{
    "errorLog": ReferenceError: ....
}

Недопустимо JSON по внешнему виду вещей. Вы просите AWS загрузить как файл приложения / json, и это не так сбои.

Поэтому, когда вы создаете файл ошибок

var errorfile = {
    'errorLog' : JSON.stringify(error)
  }

Примечание: Это, возможно, сохранит ошибку как строка, а не как JSON объект. Если вам нужен объект JSON, вам нужно создать его самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...