responsejs fetch - body: json.stringify - PullRequest
0 голосов
/ 27 декабря 2018

Мой объект Json выглядит следующим образом:

[
{
    "keys": {
        "_1": ".",
        "_2": ".",
        "_3": "."
    },
    "credits": -200,
    "_id": "5c1e3e7531dccf0017cf70b9",
    "firstName": "Martin",
    "lastName": "Seubert",
    "username": "admin",
    "createdDate": "2018-12-22T13:39:01.244Z",
    "__v": 0,
    "id": "5c1e3e7531dccf0017cf70b9"
}
]

Я хочу следующую функцию, чтобы установить ключи на значение, я получаю из другого API:

updateKeys() {
  let user = JSON.parse(localStorage.getItem('user'));
  var requestUrl = 'https://mighty-atoll-75521.herokuapp.com/users/';
  var id = user._id
  fetch(requestUrl + id, {
      method: 'put',
      headers: {
        ...authHeader(),
        'Accept': 'application/json, text/plain, */*',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({keys._1:  this.props.code})
    })
}

Но яполучить это сообщение об ошибке в браузере:

enter image description here

Есть ли у вас какие-либо предложения для меня?

С уважением

Мартин

РЕДАКТИРОВАТЬ:

Здесь вы можете найти полный код: https://github.com/kamami/prototype/blob/RealDatabase/src/components/ProgressMobileStepper.jsx

Ответы [ 4 ]

0 голосов
/ 28 декабря 2018

Чтобы было понятно, я не хочу, чтобы значения были моими новыми ключами.Я просто хочу перезаписать мои старые значения!

Я попробовал это:

  body: JSON.stringify({[user.keys[[this.props.matchId]]]: this.props.code})

Но в моих инструментах разработчика это выглядит так:

enter image description here

Он принимает значение в качестве моего ключа, но я этого не хочу.Это должно выглядеть так:

{key._1: true}
0 голосов
/ 27 декабря 2018
    updateKeys() {
  let user = JSON.parse(localStorage.getItem('user'));
  var requestUrl = 'https://mighty-atoll-75521.herokuapp.com/users/';
  var id = user._id
  fetch(requestUrl + id, {
      method: 'put',
      headers: {
        ...authHeader(),
        'Accept': 'application/json, text/plain, */*',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({[keys._1]:  this.props.code})
    })
}
0 голосов
/ 27 декабря 2018

Вы пытаетесь использовать переменную в качестве «свойства», поэтому вам нужно ComputedPropertyName из ES6.Попробуйте с body: JSON.stringify({[keys._1]: this.props.code}) вместо body: JSON.stringify({keys._1: this.props.code})

0 голосов
/ 27 декабря 2018

Вы не можете создать объект с именем свойства, таким как keys._1.

Вам придется сделать это в 2 шага:

var o = {};
o.keys = {};
o.keys._1 = this.props.code;

Если это было намерение,Вы можете процитировать это

o['keys._1'] = this.props.code;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...