Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在未发送请求时将数据插入数据库_Javascript_Node.js_Reactjs_Postgresql - Fatal编程技术网

Javascript 在未发送请求时将数据插入数据库

Javascript 在未发送请求时将数据插入数据库,javascript,node.js,reactjs,postgresql,Javascript,Node.js,Reactjs,Postgresql,所以我有一个React JS应用程序,它将数据发送到我的数据库,并将图像发送到服务器。当我在前端发出请求时,它会发送数据和图像。 出于某种原因,即使我不从前端发送数据,插入也会使用相同的信息,但由于uuid的原因,id不同 NodeJS const addData = (request, response) => { const uuid = uuidv4(); let album_id; db.pool.query('INSERT INTO albums (title, date,

所以我有一个React JS应用程序,它将数据发送到我的数据库,并将图像发送到服务器。当我在前端发出请求时,它会发送数据和图像。 出于某种原因,即使我不从前端发送数据,插入也会使用相同的信息,但由于uuid的原因,id不同

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(index.js)

和ReactJS代码:


另外,如果我将页面保留在前端并重新呈现,我认为不会进行重新插入。

请尝试在apiCall.addData成功后发送HTTP status 200 OK,如果失败,则发送HTTP 5xx。您能告诉我这是什么样子吗?什么是HTTP 5xx?@Lovendyall你能分享一些代码吗?@Lovendyall我在代码中添加了状态201,它开始工作了。不过我觉得我没有把它放在合适的地方。你能添加一些代码让我知道放在哪里吗?
const Pool = require('pg').Pool
const pool = new Pool({
  user: 'me',
  host: 'localhost',
  database: 'api',
  password: 'password',
  port: 5432,
})
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);