Sequelize 删除查询运行,但不解决 Promise
Sequelize delete query runs, but does not resolve Promise
我有一个节点 js 服务器正在使用 Sequelize 从数据库中创建和删除。当我在“用户”table 中创建新用户时,查询正常运行并且服务器 returns 响应。但是当我尝试从“用户”table 中删除用户时,查询运行但未解决承诺,因此我没有得到服务器的响应。这是
我的代码:
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]
我也从其他 table 中删除了一些东西并且它们有效,所以看起来用户 table 有点特别。奇怪的是,当我查看数据库时,我看到该记录已被删除。我不知道发生了什么。
感谢帮助!
我通过创建一个打开新 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 访问令牌中获取 uuid,并将其与加密的刷新令牌进行比较,这样用户甚至无法在函数中输入任何内容。
希望对您有所帮助!
我有一个节点 js 服务器正在使用 Sequelize 从数据库中创建和删除。当我在“用户”table 中创建新用户时,查询正常运行并且服务器 returns 响应。但是当我尝试从“用户”table 中删除用户时,查询运行但未解决承诺,因此我没有得到服务器的响应。这是 我的代码:
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]
我也从其他 table 中删除了一些东西并且它们有效,所以看起来用户 table 有点特别。奇怪的是,当我查看数据库时,我看到该记录已被删除。我不知道发生了什么。
感谢帮助!
我通过创建一个打开新 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 访问令牌中获取 uuid,并将其与加密的刷新令牌进行比较,这样用户甚至无法在函数中输入任何内容。 希望对您有所帮助!