typeorm - 我可以避免将整个实体用于使用 TypeOrm 的相关表上的数据吗?
问题描述
我在 TypeOrm 上有那些具有 N:N 关系的示例实体:
export default class Model extends BaseEntity {
@ManyToMany(type => Market, market => market.id,{ onDelete: 'CASCADE'})
@JoinTable({ 'name': 'model_enabled_markets' })
marketsEnabled: Market[];
//...
}
export default class Market extends BaseEntity {
@ManyToMany<Model>(type => Model, model => model.id,{ onDelete: 'RESTRICT'})
enabledModels: Promise<Model[]>;
//...
}
当将一个新的 Model 实例保存到数据库时,如果我有需要放置在 id 上的 id marketsEnabled
,有什么方法可以直接使用它们吗?或者我是否需要使用这些 ID 查询所需的市场,并为它们分配一个数组?
解决方案
TypeORM 期望所有实体对象(将)存在于关系数组中(这是必要的,例如,因为cascade 选项)。id
除此之外,打字稿还需要一个与模型匹配的对象,因此仅传递一个带有字段的对象可能是不够的。
要直接操作连接表,最好自己创建一个实体类。这允许您添加或删除单个外部 id 行,而无需先加载链接实体对象的导航属性(关系数组)中的所有关系条目。
推荐阅读
- c++ - 开始调用后发出的QProcess信号?
- python - 在 10^6 内有多少个数以 n 为最小素因数?
- css - 如何更改复选框的选中颜色?
- ios - 十进制数精确性错误是什么异常?
- c++ - 如何通过行尾将字符串拆分为向量
- python - 有人可以帮我解决使用 nltk word_tokenize 函数的错误吗?
- angular - 当检查数组中的重复值时,它显示未定义
- twitter-bootstrap - 在选择下拉列表旁边垂直对齐文本(带引导程序)
- razorpay - 无法创建超过 50,000 印度卢比的订单 - Razorpay
- ios - 如何从 XCode 中删除 Swift 包?