Я учусь использовать Sqlite3 с Node, и у меня возникает странная проблема.В componentWillMount()
в главном App.js моего реагирующего я делаю запрос axios на маршрут /all
, чтобы я мог заполнить список контактов.
Что странно, когда я нажимаю на другой маршрут, /add
с другим запросом axios, когда я добавляю контакт, он достигает моего then()
как такового,
axios
.post('/add', contactData)
.then(res =>
console.log(`Contact ${contactData.name} added successfully`)
)
.catch(err => console.log('Error encountered: ', err));
тоже с небольшой задержкой, потому что я устанавливаюState перед выполнением моего запроса axios, что делаетмне кажется, что контакт добавляется в таблицу контактов.
Но когда я получаю прямой доступ к localhost:5000/all
, я получаю пустой массив []
в качестве ответа.Я не уверен, что происходит.
Вот мой server.js
const express = require('express');
const sqlite3 = require('sqlite3');
const path = require('path');
const cors = require('cors');
const dbName = 'my.db';
const tableName = 'Contacts';
const dbPath = path.resolve(__dirname, dbName);
const app = express();
const port = process.env.PORT || 5000;
app.use(cors());
app.listen(port, () => console.log(`Server running on port ${port}`));
app.get('/all', (req, res) => {
let db = new sqlite3.Database(dbPath);
let sql = `SELECT number FROM ${tableName}`;
db.run(
`CREATE TABLE IF NOT EXISTS ${tableName}(name text, number text, address text)`
);
db.all(sql, [], (err, rows) => {
if (err) {
return res.status(500).json(err);
} else {
return res.json(rows);
}
});
});
app.post('/add', (req, res) => {
let db = new sqlite3.Database(dbPath);
db.run(
`INSERT INTO ${tableName}(name, number, address) VALUES(${req.name},${
req.number
},${req.address})`,
[],
err => {
if (err) return res.status(500).json(err);
}
);
return res.json({ msg: 'success' });
});
Редактировать:
Я должен отметить, что при переходе к / всеЯ получаю это,
и когда я пытаюсь опубликовать / добавить, я получаю ошибку
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
Нет, куда я отправляю несколько ответов.