当前位置: 首页 > 知识库问答 >
问题:

后遗症删除查询运行,但不解析promise

阎丰羽
2023-03-14

我有一个节点js服务器,它正在使用Sequelize创建和删除数据库。当我在“users”表中创建新用户时,查询正常运行,服务器返回响应。但当我试图从“users”表中删除用户时,查询运行但未解析Promission,因此我没有得到服务器的响应。下面是我的代码:

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]

我也删除了其他表中的内容,并且它们都起作用了,所以看起来Users表有些特殊。问题是,当我查看数据库时,我看到那条记录被删除了。我不知道发生了什么。

多谢帮忙!

共有1个答案

江棋
2023-03-14

我通过创建一个新函数来解决我的问题,该函数打开一个新的后遗症连接,并使用该连接来删除DB中的记录。这里是:

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访问令牌中提取uuid,并将其与加密的刷新令牌进行比较,这样用户甚至无法在函数中输入任何内容。希望有帮助!

 类似资料:
  • 然后在控制器文件中调用该模型作为控制器的属性 我收到的错误- TypeError:this.model.modelMethod不是Controller.ControllerMethod(/usr/app/controllers/controller.js:83:41)位于Layer.Handle[as handle_request](/usr/app/node_modules/express/li

  • 我正在尝试使用squeelize orm将SQL Server与node.js一起使用。但我一直收到“未找到主机”错误: HostNotFounderRror[SequelizeHostNotFounderRror]:无法连接到LocalHost//SQLExPress:1433-getaddrinfo ENOTFOUND LocalHost//SQLExPress 无法连接到localhost/

  • 我不明白为什么sequelize会生成这个专栏。 错误有: 未处理的拒绝SequelizeDatabaseError:列“PermissionID”不存在于Query.FormatError(/Home/Baptiste/IUT2/Projets3/Code/M3301/Node_Modules/Sequelize/lib/Dialects/Postgres/Query.js:366:16)的/H

  • 关于这个问题有好几篇帖子,但仍然没有找到答案。这是父类Userr。在@OneToMany关系中,我想删除一个特定的子帐户。 现在,当我通过“删除”查询执行此操作时,我得到以下异常。 组织。springframework。刀。InvalidDataAccessApiUsageException:执行更新/删除查询;嵌套的异常是javax。坚持不懈TransactionRequiredExceptio

  • 我正在尝试删除实体,但未生成删除查询,并且控制台中没有显示错误: 注意:@Transactional来自springFramework包 编辑: 我的所有配置都是正常的,因为我已经有了merge和persist函数,没有任何问题,只是remove方法不生成任何sql查询,也不删除给定的实体。 编辑2: 我是这样获得entityManager的:

  • 问题内容: 当我尝试从数据库中删除条目时,使用 然后我可以执行以下操作: 1)如果该行存在于数据库中,则将执行两个SQL查询:一个选择,然后一个删除 2)如果数据库中不存在该行,则仅执行选择查询 但是同样,更新不是这种情况。无论是否存在数据库行,都只会执行更新查询。 请让我知道为什么这种行为用于删除操作。这不是性能问题,因为遇到了两个查询而不是一个查询? 编辑: 我正在使用hibernate3.2