javascript - Sequelize 删除查询运行,但不解决 Promise

标签 javascript node.js postgresql sequelize.js sequelize-cli

我有一个 Node js 服务器,它使用 Sequelize 从数据库中创建和删除。当我在“用户”表中创建新用户时,查询正常运行并且服务器返回响应。但是当我尝试从“用户”表中删除用户时,查询运行但未解决 promise ,因此我没有收到服务器的响应。这是
我的代码:

const { User } = require("./models")
const user = {id: "...."} //Parsed delete request from client, id is not undefined  
User.destroy({
      where: {
        id: user.id,
      },
    })
      .then(res.status(200).clearCookie("refresh-token"));
      .catch(res.status(400));
我在控制台看到的:
Executing (default): DELETE FROM "Users" WHERE "id" = '6d3edbab-03b8-429b-b249-a9d3ba6bce7a'
过了一会儿:
DELETE /api/user/delete - - - - ms [2021-3-14 14:17:11]
我也从其他表中删除了东西并且它们可以工作,所以用户表似乎有些特殊。奇怪的是,当我查看数据库时,我看到该记录已被删除。我不知道发生了什么。
感谢帮助!

最佳答案

我通过创建一个新函数来打开一个新的 Sequelize 连接并解决了我的问题
使用它来删除数据库中的记录。这里是:

function deleteUsr(id, res) {
  const { Sequelize } = require("sequelize");

  if (!/^([0-9a-z]){8}-([0-9a-z]){4}-([0-9a-z]){4}-([0-9a-z]){4}-([0-9a-z]){12}$/.test(id)) {
    res.status(400).send("Provide valid UUID")
  }
  const seq = new Sequelize(
    "connection string"
  );

  seq
    .authenticate()
    .then(console.log("yipeee"))
    .catch(err => console.error(err));

  seq
    .query(`delete from "Users" where id='${id}'`)
    .then(x => {
      res.status(200).clearCookie("refresh-token").send(x);
      seq.close();
    })
    .catch(err => {
      res.status(400).send(err);
      seq.close();
    });
}
如果您的输入未正确清理,请避免使用此功能,因为如果使用此功能,任何已签名的人都可以删除任何用户。我从经过验证的 jwt 访问 token 中获取 uuid 并将其与加密的刷新 token 进行比较,因此用户甚至无法在函数中输入任何内容。
希望有帮助!

关于javascript - Sequelize 删除查询运行,但不解决 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66625034/

相关文章:

javascript - 为什么导航栏在滚动后不改变其背景颜色?

javascript - hapi - server.pack.register 功能不起作用

javascript - 地理空间框查询 - Mongoose、Node.js MongoDB - 不返回任何结果

c# - AngularJS 路由问题

javascript - Grunt 找不到任务

javascript - 单页应用程序的版本控制和路由?

javascript - 如何使用 javascript 对谷歌数据存储进行压力测试?

postgresql - Postgres 从表行中选择

SQL从三个表中选择至少两个不同的值连接在一起

node.js - allowNull :false and required:true did not validate null string input