我在服务器端使用数据体,客户端有多个试剂原子,现在看客户端的数据记录。
目前,我正通过一个初始的api加载传递一个嵌套结构,其中包含一个数据体拉查询的结果。它很简洁,工作也很好。
然而,现在希望探索数据记录的潜在好处。卖点似乎是允许将正常化保持到属性级别。然而,我遇到了一个最初的障碍。Datascript并不像我想象的那样(可能是希望的.),它只是数据组db的子集并在客户端上复制它。问题是,数据体的实体eid不能共享到数据记录中,特别是当您将transact!实体放入数据记录时,将为每个实体发出一个新的eid( datascript )。
我还没有研究过所有的后果,但似乎除了datascript自己新发布的:db/id之外,还需要将:db/id存储在数据记录中,ref类型将使用的是数据记录的id,而不是数据组。这可能会使数据同步变得复杂,感觉它可能会产生许多潜在的问题,而且没有我所希望的那样同构。但还在努力。这里有谁能分享经验吗?也许有个解决办法。
更新:想知道一个解决方案是否是禁止在客户机上使用数据组的:db/id,通过从初始负载中过滤数据组的:db/id来强制执行,而不是将它们传递给客户端。然后,任何客户端->服务器通信都必须使用(服务器生成的)段塞,它们将在初始负载中传递。因此,所有实体在客户机上都会有不同的id,但是我们禁止服务器id到客户端的通道,因此客户机id如果意外地传递给服务器,应该说没有找到eid。这方面可能还有更多的问题,还没有解决好。
在传递和插入到客户端时,您还必须考虑实体,而不是数据,以便在那里创建正确的引用(或者,如果争论的话,也可以插入树)。
因此,我发现数据/数据记录的合作伙伴关系当然不仅仅是“序列化数据库的一部分”--如果在服务器上使用数据记录(这里根本不是用例)(需要使用db持久性),这可能会有效。
发布于 2021-07-15 11:11:24
如果我没记错的话,数据组为实体I使用了所有64位,但是在JavaScript (扩展到DataScript中)中只有53位整数最大值。因此,某种形式的翻译层是必要的,没有办法绕过它。
在DataScript中,您完全可以将:db/id指定为您想要的任何内容,它将使用它而不是生成它自己的。一定要装进53位。
https://stackoverflow.com/questions/68381743
复制相似问题