Реакция: запрос POST Fetch на сервер JSON приводит к TypeError: невозможно прочитать идентификатор свойства undefined

avatar
Augusto87
8 августа 2021 в 21:17
122
0
0

Я пытаюсь преобразовать объект в файл базы данных, используя сервер JSON; однако сервер JSON продолжает выдавать ошибку: TypeError: Cannot read property 'id' of undefined.

Я могу успешно прочитать файл с помощью Fetch, это просто POST, с которым у меня возникли проблемы. Есть идеи?

JSON-Server Error message

//this is the function where I perform the POST

    const handleSubmit = (e) => {
        e.preventDefault();

        setSubmitted('t');
        setIsPending(true);

        const arg = { filename, trialId, hash, location, author, submitted };
       
        fetch('http://localhost:8000/args/', {
            method: 'POST',
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify(arg)
          }).then(() => {
            console.log('new file added');
          })
 
    };

//This is my current db file:

{
    "args": [

        {
            "filename": "Accelerometer",
            "trialId": "01",
            "hash":"",
            "author": "",
            "location": "IPFS",
            "submitted": "f"
        }
    ]
}

// Это моя работающая выборка, которую я использую для чтения со страницы БД.

setTimeout(() => {
    fetch('http://localhost:8000/args', { signal: abortCont.signal })
        .then(res => {
            //check response for error
            if (!res.ok) {
                throw Error('Error when fetching data');
            }
            return res.json();
        })
        .then(data => {
            setArgs(data);
            setIsPending(false);
            setError(null);
        })
        .catch(err => {
            if (err.name === 'AbortError') {
                console.log('fetch aborted');
            } else {
                setError(err.message);
                setIsPending(false);
            }
        })
}, 1500);

// Это функция Function.createID на сервере, у которой возникла проблема.

function createId(coll) {
  const _ = this;

  const idProperty = _.__id();

  if (_.isEmpty(coll)) {
    return 1;
  } else {
    let id = _(coll).maxBy(idProperty)[idProperty]; // Increment integer id or generate string id


    return _.isFinite(id) ? ++id : nanoid(7);
  }
}
Источник
Kelvin Schoofs
8 августа 2021 в 21:22
1

Всегда включайте текст (например, код, трассировку стека и т. д.) в блоки кода, не изображения.

Kelvin Schoofs
8 августа 2021 в 21:23
2

Кроме того, поскольку ошибка, похоже, происходит на сервере, почему вы не включили серверный код, обрабатывающий запрос? особенно код, на который указывает трассировка стека

Augusto87
8 августа 2021 в 21:36
0

Я добавил код функции с сервера

Kelvin Schoofs
8 августа 2021 в 21:40
0

Что в итоге получается coll и idProperty? Я предполагаю, что _ относится к Lodash?

Augusto87
8 августа 2021 в 21:53
0

createID используется для переопределения lodash-id

Ответы (0)