mysql - Angular 或 Node.js 在 Node 重启时将重复项插入 Mysql

标签 mysql node.js angular

我的应用让用户输入出价或帖子等数据。我注意到,如果我出价,一切都会按预期进行,但如果 Node 服务器关闭并重新打开,那么它会在 MySQL 中复制相同的帖子。现在,如果我在一个 session 中进行多次出价,然后关闭 Node 服务器,它不会复制所有出价,而只会复制其中的一部分。

我注意到在我的网络选项卡中,我所做的一些出价有待处理的请求。 重新启动 Node 服务器后,其中一些出价将在此处重复。

这是一个 Angular 6 应用程序。 我有根据的猜测是 Angular 或 Node 没有满足某些要求,因此重新启动插入重复数据时那些待处理的请求。

知道可能是什么原因造成的吗?我将提供代码以防万一

这是调用 api 的 Angular 服务

placeBid(jobId, bidAmount: number, userId) {

const bidPayload = {
  jobId: jobId,
  userId: userId,
  bidAmount: bidAmount
};

this.http.post<{message: string}>('http://localhost:2200/api/jobs/place-bid', bidPayload).subscribe((responseData) => {
  console.log(responseData);
});

}

这是我的 Node 代码

 router.post("/place-bid/", checkAuth, (req, res, next) => {


pool.query(`
SELECT contractors.cont_id
FROM users
JOIN contractors on users.user_id = contractors.user_id
WHERE users.user_id = ${req.body.userId}
`, (err, results, fields) => {
let contId = results[0].cont_id;
console.log(contId);
  pool.query(`
  SELECT jobs.cust_id
  FROM jobs
  WHERE job_id = ${req.body.jobId}
  `, (custErr, custResults, custFields) => {
    console.log('cust results: ' + custResults);
    pool.query(`
    INSERT INTO bid(job_id, cont_id, cust_id, bid_amount) VALUES (${req.body.jobId},${results[0].cont_id},${custResults[0].cust_id}, ${req.body.bidAmount})
    `, (insertErr, insertResults, insertFields) => {
      console.log('Nested Results: ' + JSON.stringify(results));
    }
  )
  })


})


  });

对造成这种情况的原因感到困惑,但过去几天我一直在摸不着头脑。

编辑:我想我已经将范围缩小到待处理的请求。现在的情况是:

进行出价/帖子 -> 服务器重新启动 -> 重复出价/帖子

我注意到如果我:

出价/发布 -> 刷新页面(删除待处理的请求) -> 服务器重新启动 -> 无重复

最佳答案

我解决了!

我的请求没有响应,查询已完成,请求处于待处理状态。 添加这些响应后,待处理的响应就消失了,并且不再有任何重复项

 res.status(200).json({
    message: 'Bid placed!'
  })

关于mysql - Angular 或 Node.js 在 Node 重启时将重复项插入 Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52285924/

相关文章:

mysql - 用于获取前两个不同值之间差异的 SQL 命令

mysql - 如何使用批处理脚本在mysql5.5中输入密码?

angular - 我应该在表单控件上使用 `registerOnChange` 还是 `valueChanges`

latex - 是否可以通过 node.js 编译 latex 文档?

javascript - Javascript 导入和 Angular 导入有什么区别?

css - Angular 4 CSS DIV 背景图像绑定(bind)不起作用

php MYSQL 查询 "ORDER BY"不工作

mysql - 在 MySQL 中使用 Union All 和 Order By

node.js - NPM 需要一个对等点,但所有对等点都在 package.json 和 node_modules 中

node.js - 我如何在 debian lenny 上升级我的 sqlite3 包