2

对于存储在数据库中的文档,我想创建一个人类可读的密钥来唯一标识文档。例如 PO20090110-001。我该怎么做呢?

4

4 回答 4

1

这不简单。

为唯一键创建字段,并且此键保存 onSave(或其他事件),但您必须保护此数字是唯一的。

您可以创建代理,检查多米诺服务器上的号码,如果代理发现冲突,则通知应用程序管理员或其他责任人解决此问题。

或者每个副本生成自己的编号,并在多米诺骨牌上复制后,代理以正确的格式分配编号。

于 2009-06-08T05:40:32.400 回答
1

我们的帮助台使用的一种解决方案是获取当前用户的姓名首字母并将其添加到视图中最后一个文档的数字中。将数字加一并将其与首字母和新数字一起存储为新文档作为键。

于 2009-06-08T05:46:50.640 回答
1

保存文档时,您可以使用日期或您喜欢的任何技术将数字的第一部分放在一起(ej.“PO”&format(date,“YYYYMMDD”)&confDoc.getitemvalue(“doccounter”))。

至于计数器,我喜欢将其存储在配置文档中,并在保存每个文档时对其进行更新。如果白天创建了很多文档,您可能会在配置文档上遇到代表冲突,如果是这种情况,您可以让服务器上的代理进行实际的号码分配,这样做的缺点是您没有保存时不要立即获取号码。

希望这可以帮助。

于 2009-06-08T15:43:06.817 回答
1

只需使用 @Unique 函数,您就可以在 Domino 中创建一个“几乎”唯一的键,无需任何参数。这将根据当前用户的名字和姓氏以及当前时钟时间生成一个字符串键。你最终会得到一个类似的字符串:“ESCR-12345678”。

我说“几乎”是唯一的,因为它不像 SQL 中的标识列——Domino 不保证它只会给出一个特定的字符串一次。如果您在一次生成许多 id 的服务器端代理中使用 @unique - 例如,循环并在循环中使用 @unique 的代理,您可能会遇到@unique 将返回重复项的情况 - 因为您创建2 文档在同一秒内,因为您的“用户名”始终是服务器的规范名称。但是,在这种情况之外,@unique 通常可以安全使用。

如果您随后需要按此 ID 打开或引用文档,只需创建一个按该 ID 排序的视图,您可以使用 ../myView/id?readDocument 形式的 url。

于 2009-06-22T21:03:31.587 回答