我很好奇如何创建Parse Server用于其记录存储的10个字符长的Mongodb objectId,即(XlatDx2nYf)。
我之所以特别提出问题,是因为试图将Parse整体式产品转为面向服务的方法(在这种情况下基于Java),并且无法弄清楚如何使用这些看似“格式错误”的objectIds创建对象。但是这个问题比Java / Mongodb接口更通用。我实际上不知道Parse Server如何摆脱使用不符合Mongodb ObjetId standards的这些自定义objectId创建记录的情况。这里的解释太棒了。
从那里我觉得我可以在Java(Morphia)世界中弄清楚。谢谢你们的投入!
答案 0 :(得分:1)
在我看来,这些解析ID只是Base62-encoded整数。我发现this snippet可以将任何int
格式化为这种格式。
不幸的是,即使Java long
也只有8个字节,因此您无法一次性获得ObjectId,但是类似以下内容的方法应该起作用:
ObjectId myId = new ObjectId()
String base62 = Base62.fromBase10(myId.getTimestamp()) +
Base62.fromBase10(myId.getMachineIdentifier()) +
Base62.fromBase10(myId.getProcessIdentifier()) +
Base62.fromBase10(myId.getCounter());