Я получаю эту ошибку всякий раз, когда пытаюсь использовать метод API POST.
Я добавил "proxy: "http://localhost:5000"
в файл package.json
в папке client
.
server/models/submitted.js
:
static insert(student_id, student_name, modules, callback) {
db.query(
`INSERT INTO returned (student_id), (student_name), (modules) VALUES ($1), ($2), ($3)`,
[student_id], [student_name], [modules],
function (e, res) {
if (e.error) {
return callback(e);
}
callback(res);
}
);
}
server/api/submitted.js
метод публикации:
router.post("/", function (req, res) {
var id = req.body.id;
var name = req.body.name;
var modules = req.body.modules;
Submitted.insert(id, name, modules, function (e, result) {
if (e) {
return res.json(e);
}
return res.json(result);
});
});
client/App.js
метод, вызывающий метод api/submitted
POST:
onSubmit = () => {
fetch("api/submitted", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
student_id: this.state.id,
student_name: this.state.name,
modules: this.state.modulesSelected
})
})
.then(res => res.json())
.then(res => {
console.log("posted:" + res);
this.setState({ name: "", id: "", modulesSelected: [] });
});
};
Я попытался поиграться с "proxy: http://*
в package.json
безрезультатно.
package.json
в папке root имеет следующее скрипты для разработки:
"scripts": {
"dev": "concurrently \"npm run server\" \"npm run client\"",
"client": "npm start --prefix client",
"server": "nodemon server"
}
Есть предложения? Пока все, что я пробовал из других потоков, не работает.
РЕДАКТИРОВАТЬ:
Я исправил проблему, изменив функцию insert
на следующее:
static insert(student_id, student_name, modules, callback) {
db.query(
`INSERT INTO returned (student_id, student_name, modules) VALUES ($1,$2,$3)`,
[student_id,
student_name,
modules
],
function (e, res) {
if (e.error) {
return callback(e);
}
callback(null, res);
}
);
}
Я также добавил try/catch
, где insert
называется:
try {
Submitted.insert(id, name, modules, function (e, result) {
if (e) {
return res.json(e);
}
return res.json(result);
});
} catch (error) {
res.status(500).json({
error: error.toString()
})
}