假设我们有多个站,每个站有很多站机器,没有站id,站机器就不能存在。 每台机器可以有不同的插座,并且每台机器都有特定的品牌。 应用程序需要创建一个站及其所有依赖的机器。
这意味着我们需要先创建站点,然后通过机器,但是站点取决于机器。
域实体道具:
IStationProps {
name: string;
machines: Machine[];
location: string
}
IMachineProps {
name: string;
sockets: Socket[],
}
ISocket {
name: string;
}
IBrand {
name: string
}
如果请求包含套接字列表,该列表可以是系统中已有的,也可以是在创建站时创建的。
如何验证套接字(如果它们已存在于系统中)并且如果给定的 id 无效,我们需要将其作为新条目。
示例
"socket": [
{
"socket_id": "some_id",
"name" : "Alpha"
},
{
"name": "delta"
},
{
"socket_id": "some_id_which_is_not_in_db"
name: "gamma"
}
]
这里,验证所有套接字后,还需要在系统中创建第二个和第三个套接字 ID,并将其添加到站机中。品牌也是如此。
另外,在下面的代码中,机器列表还需要验证工作站 ID 作为创建机器,并且工作站需要机器作为创建列表,如何处理这种依赖情况?
const machines = Machines.create(machines_array)
const station = Station.create({
name,
machines
});
我会将问题分解为相互依赖关系,例如:
幸运的是,has much 和 has one 关系之间不存在循环依赖关系。这意味着您可以自下而上构建领域模型。
const sockets = Sockets.filter(sockets_array);
const machines = Machines.create(machines_array.map(m => {...m, sockets: sockets}));
const station = Station.create({name, machines});
这或多或少是伪代码,但希望您能理解。从关系的底部开始,找出需要更改的内容,然后逐步建立到最顶层的父级。