【问题标题】:How to auto increment a field value in Mongoose model [duplicate]如何在猫鼬模型中自动增加字段值[重复]
【发布时间】:2018-01-05 14:00:54
【问题描述】:

我想在下面的架构中为 procedureiddoctorId 实现自动增加 ID,并且 ID 应该是 5 位数字。最好的方法是什么。有人可以提供示例代码

var hospitalDoctorSchema = new Schema({

    Treatment: [{
            procedureid: {
                type: Number,
                required: true,
                unique: true,
                default: 0
            },

            doctor: {
                doctorId: {
                    type: Number,
                    required: true,
                    unique: true,
                    dropDups: true,
                    default: 0
                }],

        },
    },
    updated_at: {
        type: Date,
        required: true,
        default: Date.now
    }
});

【问题讨论】:

    标签: javascript node.js mongoose


    【解决方案1】:

    更新:我做了更改,请仔细阅读。

    我知道你想要完成的工作。如果您只需要一个数字来跟踪事物并希望它是唯一的,则可以使用 Unix 时间戳来完成此操作。

    像这样设置procedureid的默认值:

    default : new date().getTime()
    

    getTime 是一个函数,它返回自 1970 年 1 月 1 日以来经过的毫秒数,因此您生成的每个 id 都是唯一的并且大于前一个。

    因此,您将获得一个 13 位数字,该数字很大但对于您的数据库每秒最多 1000 次插入是唯一的!

    如果您认为 13 太多,您可以将其减少到 9,但包含更多的代码行的字符。

    首先从 npm 安装 hashid。

    npm install hashids --save
    

    现在将它添加到您的文件中。

    const hash = require("hashids");
    var new_hash = new hash("A salt");
    var unique_number  = new Date().getTime();
    var unique_id = new_hash.encode(unique_number); // This is the unique id with chars included.
    

    您现在可以在任何需要的地方使用 unique_id,但在部署应用后不要更改 salt 以避免冲突。

    【讨论】:

    • 在同一毫秒内发生多个插入是可能的,所以这并不总是有效。
    猜你喜欢
    • 2018-06-23
    • 2017-06-01
    • 2014-06-10
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 2016-04-25
    • 2011-06-25
    相关资源
    最近更新 更多