javascript - 如何确保随机创建一个独特的标识符?
问题描述
我正在使用随机 npm 将 id 存储到 mongoDB,因为 mongo 只会创建一个不能用于发票编号的长 objectID。我现在的模型是:
orders: [
{
orderReference: { type: String },
orderStatus: { type: String },
orderType: { type: String },
orderDate: { type: Date, default: Date.now },
itemDetails: { type: String },
purchaseOrder: {
orderReference: { type: String },
orderStatus: { type: String },
orderType: { type: String },
orderDate: { type: Date, default: Date.now },
itemDetails: { type: String },
},
thirdPartyOrder: {
orderReference: { type: String },
orderType: { type: String },
orderDate: { type: Date },
itemDetails: { type: String },
},
platformRevenue: {
orderReference: { type: String },
orderType: { type: String },
orderDate: { type: Date, default: Date.now },
itemDetails: { type: String }
}
}
],
在当前模型中,我如何检查/查询当前在其他订单中的 ID 不是重复的并且实际上是唯一的。因为 randomatic 本身不会创建唯一的 ID。它只是创建一个随机 ID,而在我的用例中,我想要一个唯一的 4 位数字 ID 用于 orderReference。
是否有可能四位数的随机唯一 ID 会在一天内完成,我宁愿创建顺序 ID 而不是增量为 +1?
为 orderReference 创建 ID 的行业标准是什么。在我一生中收到的所有发票上,我大多看到 4 到 6 位数字 ID。
请帮助并建议最好的用例。
解决方案
我宁愿使用您的第二个建议,即带增量的顺序 ID。
虽然可以使用随机数,但您可能会在插入之前检查特定 ID 是否已在数据库中,在这种情况下,您必须生成新 ID。
更重要的是,使用顺序版本,您将能够(近似)跟踪发票/发票数量。
无论哪种方式,限制都是 10.000 个不同的 ID(包括 0 个)。
希望能帮助到你!
推荐阅读
- php - 使用 mysql 表中的信息从连接中删除数据
- pandas - 正则表达式文本解析器
- java - `java.nio.file.Files.createFile` 是阻塞调用吗?
- docker - docker manifest 平台变体的有效值是什么
- stripe-payments - 条纹转账收据
- python - 在 Keras 中使用 SimpleRNN 时如何设置二进制变量的输入和输出形状?
- ios - iOS - MVP 设计中的 UITableView 委托和数据源
- node.js - 如何通过常见的 _id 字段过滤我的事件数组?
- java - signInWithEmailAndPassword(email, pass) 不适用于通过 Firebase Google SignIn 创建的帐户
- .htaccess - HTACCESS 重写规则导致重定向循环