Изменение значений JSON с помощью выборки

#javascript #json #fetch

#javascript #json #выборка

Вопрос:

Эй, ребята, я пишу небольшое почтовое приложение и пытаюсь создать кнопку архивирования для каждого электронного письма. Я уверен, что функция вызывается, но по какой-то причине она не меняет значение archived на true.

Странно то, что если я заменил «архивировано: истина» на «прочитано: истина», это изменит «чтение» на true. Однако по какой-то причине это не изменит атрибут archived.

Я уверен, что ‘archived’ является допустимым атрибутом в API JSON.

По какой-либо причине это может произойти? Вот код, о котором идет речь:

 function archive_email(id) {
    
    fetch('/emails/'   id, {
    method: 'PUT',
    body: JSON.stringify({
    archived: true
      })
    })
    load_mailbox("inbox");
    
     
}
  

Комментарии:

1. I'm sure that 'archived' is a valid attribute in the JSON API — только вы можете видеть код сервера, который обрабатывает ваш запрос … итак, как мы можем помочь в отладке вашего серверного кода?

Ответ №1:

Я думаю, что это проблема с обещанием, вы пробовали следующий код?

 function archive_email(id) {
    fetch('/emails/'   id, {
        method: 'PUT',
        body: JSON.stringify({
            archived: true
        })
    }).then(() => {
        load_mailbox("inbox");
    })
}
  

Комментарии:

1. Поскольку «fetch api» возвращает «обещание», вам необходимо использовать функцию «then», чтобы дождаться ответа от сервера, который отредактирует атрибут данных на archived: true. Это означает, что если вы не используете «then function», вы не знаете, изменяет ли сервер атрибут или нет. Вы можете посмотреть этот url о том, как использовать fetch api. developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch .