Итак, у меня есть приложение React JS, которое отправляет данные в мою базу данных, а также изображения на сервер. Когда я делаю запрос на интерфейс, он отправляет данные и изображение. По какой-то причине, даже если я не отправляю данные из внешнего интерфейса, INSERTS создаются с той же информацией, но с разными идентификаторами из-за uuid.
NodeJS
const addData = (request, response) => {
const uuid = uuidv4();
let album_id;
db.pool.query('INSERT INTO albums (title, date, description, id) VALUES ($1, $2, $3, $4) ON CONFLICT (id) DO NOTHING RETURNING *' , [request.body.title, request.body.date, request.body.description, uuid])
.then(res => {
album_id = res.rows[0].id;
console.log('INSERT ' + res.rowCount);
console.log('Request ' + JSON.stringify(request.body));
}).then(() => {
const dbQueryPromises = [];
for (let i = 0; i < request.body.files.length; i++) {
dbQueryPromises.push(db.pool.query('INSERT INTO songs (id, name, link, index, album_id) VALUES ($1, $2, $3, $4, $5) ON CONFLICT (album_id, index) DO NOTHING RETURNING *', [uuid, request.body.files[i].name, request.body.files[i].link, request.body.files[i].index, album_id]))
}
return Promise.all(dbQueryPromises);
}).then(res => {
console.log('Array of INSERT result for second insert: ');
}).then(() => {
db.pool.query(
'INSERT INTO file (name, type, size, path, album_id) VALUES ($1, $2, $3, $4, $5) ON CONFLICT (album_id) DO NOTHING RETURNING *',
[request.file.filename, request.file.mimetype, request.file.size, request.file.path, album_id]);
}).then((res) => {
console.log("INSERT INTO file(images) " + request.body.data);
}).catch(error => console.log(error));
}
NodeJS (что дБ в коде выше)
const Pool = require('pg').Pool
const pool = new Pool({
user: 'me',
host: 'localhost',
database: 'api',
password: 'password',
port: 5432,
})
NodeJS (индекс. js)
var storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, 'public')
},
filename: (req, file, cb) => {
cb(null, Date.now() + '-' +file.originalname)
}
})
var upload = multer({ storage: storage });
app.post('/albums', upload.single('file'), apiCall.addData);
И код ReactJS: https://gist.github.com/DDavis1025/db77b2f7a44c2ea26a8b18ba7aa70952
Также я не верю, что повторная вставка выполняется, если Я оставляю страницу на внешнем интерфейсе и перерисовываю ..