【发布时间】:2016-03-09 08:33:42
【问题描述】:
我参与了一个项目,我们使用 MongoDB 作为主数据库系统,使用 JavaScript/NodeJS 作为服务器端。我们需要与外部合作伙伴进行整合。
我们合作伙伴的 API 要求操作编号应该是唯一的整数值。我们决定使用来自ObjectId 的 4 字节时间戳和 3 字节随机增量值的组合,但结果数字太高,我们失去了精度。
流程如下
var getUniqueIntFromObjectId = function (object_id) {
var res = null;
object_id = object_id.toString();
res = parseInt(object_id.substring(0, 8), 16).toString() + parseInt(object_id.substring(18, 24), 16).toString();
return parseInt(res, 10);
};
我们如何改进这个程序,或改变它以实现目标?
【问题讨论】:
-
使用 'bignumber.js' npm 模块解析整数值。使用“var BigNumber = require('bignumber.js');x = new BigNumber(123.4567)”
-
api 要求的整数大小是多少? 32位? 64位? 128位?当它是 96 位或更多时,您可以将 ObjectId 的十六进制表示转换为整数。
标签: javascript mongodb computer-science