问题描述
我将二进制UUID存储在mongoDB中,并将它们用作索引。这要好用,这要感谢我从node.js使用的mongo-uuid
库
但是,我现在尝试在其他上下文中使用这些UUID,即在我作为mapReduce函数运行的服务器端脚本中。基本上,我在每个文档中搜索类似UUID的代码以形成对象之间的关联链接。这段代码很好用,但是在处理二进制UUID字段时遇到了问题。
我发现我可以通过执行以下操作将十六进制代码转换为UUID
var uuid = UUID(<hex string>)
但是没有从二进制对象到十六进制代码的逆函数。看来,在Mongo框架内,无法访问Binary.value(),并且UUID()对象没有字符串化调用。
我发现的最佳解决方法是:
var uuid = UUID(); // Some BSON UUID instance
var uuid_str = uuid.toString() // Resolves to "UUID(\"abcdabcd-...-12345678\")"
.substring(6,32); // Take out the hex code
但是,这使我感到紧张,因为它有点破烂-有没有更强大的方法?
此外,导出包含二进制UUID的Mongo文档时有时会出现问题。为了解决这个问题,我开始只在键字段中使用二进制UUID,并使用字符串UUID来引用其他文档。
谁能进一步阐明如何在服务器端javascript中操纵BSON二进制类,或如何更改节点中BSON类型的默认toString行为?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)