我正在尝试删除与表中一行相关联的行,而不删除主行(因此不能使用级联)。
这是一个原始的PostgreSQL查询,它实现了我想用SQL实现的功能。sequelize是否能够生成这样查询:
DELETE FROM session USING user WHERE session.user_id = user.id AND user.username = 'bob'
模型是(不包括不相关的列):
create table user (
id uuid primary key default uuid_generate_v4(),
username text UNIQUE NOT NULL
);
create table session (
id uuid primary key default uuid_generate_v4(),
user_id uuid NOT NULL references user(id) ON DELETE CASCADE
);
关联在SEQELIZE中定义为:
Session.belongsTo(models.User, {
foreignKey: "user_id"
});
User.hasMany(models.Session, {
foreignKey: "user_id"
});
查询的另一个版本可以是:
DELETE FROM session WHERE session.user_id = (SELECT user_id FROM user WHERE username = 'bob');
但我认为sequelize还不能处理子查询?
我尝试了一些类似的方法:
return Session.destroy({
include: [
{ model: User, where: { username: 'bob' }}
],
truncate: false
});
然而,后遗症抱怨道:
错误:Model.Destroy得options参数中缺少where或truncate属性.
如果有人到了这里,这就是我“用后遗症删除关联行”的方式:库的帮助很小:
users.findone({...})
)setSessions(array)
(名称取决于您的模型),该方法返回一个承诺。/** @param {string} username */
const clearUserSessions = async (username) {
const userInstance = await Users.findOne({
where: { username },
include: ['sessions']
})
if (!userInstance) {
/* user not found */
return ...
}
await userInstance.setSessions([])
/* removed every session from user */
return ...
};
稍后:
try {
await clearUserSessions('bob')
} catch(err) {
...
}
问题内容: 我试图做一个简单的例子,以学习如何从父表中删除一行并使用Doctrine2自动删除子表中的匹配行。 这是我正在使用的两个实体: Child.php: 父亲.php 这些表已在数据库上正确创建,但未创建“删除级联”选项。我究竟做错了什么? 问题答案: 在教义中有两种级联: 1)ORM级别- 在关联中使用- 这是在UnitOfWork中完成的计算,不影响数据库结构。删除对象时,UnitOf
问题内容: 我有两个表,和。中的每个条目都有一个指向的外键。使用Sequelize,如何获取与中的每个条目相关联的所有条目以及其中的条目总数? 原始SQL: 楷模: 问题答案: 使用与和为: 或者,您可能还需要添加一个:
接口说明 如果已建立了主屏与副屏之间的关联,而由于某些原因,不想再进行两个场景之间数据的差异对比,Wish3DEarth团队新增了删除关联场景的接口,开发者可以通过该接口,来解除主屏与副屏之间的关联性。 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/contrasts/1.0.0/del 是否需要登录 是 请求字段说明
问题内容: 问题: 我 在* 两个实体 A和B 之间 有 多对多关联 。我将 A实体 设置为其 关系 的 所有者 (inverse = true在b.hbm.xml中A的集合上)。 * 当我 删除一个A实体时 , 联接表中的 相应 记录也会被删除 。 当我 删除一个B实体时 , 联接表中的 相应 记录不会被删除 (完整性违反异常)。 - 让我们考虑一些非常简单的 示例 : 文件 a.hbm.xml
问题内容: 我有一个组件数据库。每个组件都是特定的类型。这意味着组件和类型之间存在多对一的关系。删除类型时,我想删除所有具有该类型外键的组件。但是,如果我没记错的话,级联删除将在删除组件时删除类型。有什么办法可以做我所描述的吗? 问题答案: 这就是您要包含在组件表中的内容。 请记住,您需要使用InnoDB存储引擎:默认的MyISAM存储引擎不支持外键。
问题内容: 我刚刚开始使用Sequelize和Sequelize CLI 由于这是开发时间,因此经常添加和删除列。在现有模型中添加新列的最佳方法是什么? 例如,我想将新列“ completed ”转换为 Todo 模型。我将此列添加到models / todo.js。下一步是什么? 我试过了 无法正常工作: “ 未 执行任何迁移,数据库架构已经是最新的。” 问题答案: 如果使用sequelize-