我有一个由REST驱动的父子实体关系。有效载荷包含父级和子级的数据。父母可以生很多孩子。
当(子)有效负载发布时,API首先检查父级是否存在(仅基于有效负载中的ID值)。如果其子实体确实存在,则在创建子实体时将该父实体分配给实体引用字段。如果父级不存在,则创建父级,并将新创建的父级分配给子节点。
这很好用..。直到。现在看来,API用户在同一时间发布具有相同父级的多个子级(我假设是某种多线程进程)。因此,当前两个子级被创建时(“同时”),并且它们都确定没有存在的父级,然后创建重复的父级,就会发生故障。
是否有某种Drupal方法允许我锁定某个实体类型的创建;由要创建父级的API代码中的第一个点触发?我假设它们不是完全相同的时间;但它们是在1秒之内,更准确地说,它们是在创建第一个父母所需的时间内。也许甚至是一个REST函数来处理线程调用?
发布于 2021-02-17 23:30:05
我听起来不像是多线程问题吗?
如果在实体引用字段中有两个具有相同新父级的子程序(BTW,使用什么方法来创建,这是相当棘手的.),它可能会被创建“两次”,但是使用不同的ids否?
为什么不先创建父实体,然后将其分配给实体引用字段target_id或实体属性(如果您自己控制它)?
https://drupal.stackexchange.com/questions/300316
复制相似问题