【发布时间】:2021-10-26 07:03:16
【问题描述】:
我有一个应该从数据库中删除记录的端点:
delete: async(roleId, actionId) => {
const actionrole = await ActionRoleModel.findAll({
where: {
roleId: roleId,
actionId: actionId
},
});
return await actionrole[0].destroy();
}
[0] 必须在这里,因为actionrole 看起来像[{...}]。这是模型:
'use strict';
module.exports = (sequelize, DataTypes) => {
var ActionRole = sequelize.define('actionroles', {
actionId: {
type: "UNIQUEIDENTIFIER",
field: "actionid"
},
roleId: {
type: "UNIQUEIDENTIFIER",
field: "roleid"
},
createdAt: {
field: "createdat",
type: DataTypes.DATE
},
updatedAt: {
field: "updatedat",
type: DataTypes.DATE
},
}, {});
ActionRole.associate = function(models) {
// associations can be defined here
};
ActionRole.removeAttribute('id');
return ActionRole;
};
但作为终端中的错误,我得到了
DatabaseError [SequelizeDatabaseError]:“IN”处或附近的语法错误
这里是 SQL:
DELETE FROM "actionroles"
WHERE IN (
SELECT FROM "actionroles"
WHERE "roleid" = '53549d62-cd2a-497f-9d1c-1ee1901261ab' AND "actionid" = '6c70bf65-30fd-4640-91d0-8fbda85c4dd5'
LIMIT 1)
怎么了?我该如何解决?
【问题讨论】:
-
WHERE IN错误,缺少表达式。与SELECT FROM相同。顺便说一句,<expression> IN (<scalar subquery> limit 1)和<expression> = (<scalar subquery> limit 1)是一样的
标签: javascript sql postgresql orm sequelize.js