fetch () в js - добавление нового объекта на json сервер - PullRequest
1 голос
/ 06 января 2020

У меня вопрос о добавлении нового объекта на json сервер:

У меня есть календарь, и после каждого изменения даты я хочу добавить эту дату на сервер. Прямо сейчас это выглядит так:

[
    {
        "name": "three",
        "dates": {
            "6.01.2020": []
        },
        "id": 3
    },
    {
        "name": "four",
        "dates": {
            "5.01.2020": []
        },
        "id": 4
    }
]

и код:

  const { day, changeDay, userObject, newDay, addNewDay, tasks } = useContext(
    UserContext
  );

  const [date, setDate] = useState(new Date());
  const onChange = date => {
    setDate(date);
    // changeDay(date.toLocaleDateString());
    addNewDay(date.toLocaleDateString());

    try {
      fetch(`http://localhost:3003/users/${userObject.id}`, {
        method: 'PATCH',
        body: JSON.stringify({ dates: { [newDay]: [] } }),
        headers: {
          'Content-Type': 'application/json'
        }
      });
    } catch (err) {
      console.error(err);
    }
  };

В начале у меня есть текущий день из контекста. Но после каждого изменения дня новый день заменяет день, и я хочу добавить его, например:

"dates": {
"6.01.2020": [],
"7.01.2020": [],
"8.01.2020": [],
}

Кто-нибудь?

1 Ответ

1 голос
/ 06 января 2020

РЕШЕНИЕ (пришлось создать новый объект, отобразить массив newDay и заполнить объект)

const { day, userObject, newDay, addNewDay, tasks } = useContext(UserContext);

  // object with today date and tasks
  let obj = { dates: [{ [day]: tasks }] };

  const [date, setDate] = useState(new Date());
  const onChange = date => {
    setDate(date);
    addNewDay([...newDay, date.toLocaleDateString()]);

    // Add new days to the object
    newDay.map((el, i) => {
      obj.dates.push({ [newDay[i]]: [] });
    });

    try {
      fetch(`http://localhost:3003/users/${userObject.id}`, {
        method: 'PATCH',
        body: JSON.stringify({ dates: obj.dates }),
        headers: {
          'Content-Type': 'application/json'
        }
      });
    } catch (err) {
      console.error(err);
    }
  };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...