如何在Mongoose模型中自动增加字段值

时间:2017-07-29 16:19:24

标签: javascript node.js mongoose

我想实现procedureid&的自动增加ID以下架构中的doctorId和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
    }
});

1 个答案:

答案 0 :(得分:0)

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

我知道要解决你想要完成的事情。如果您想要的只是一个数字来跟踪事物并希望它是唯一的,您可以使用Unix时间戳来完成此任务。

设置procedureid的默认值,如下所示:

default : new date().getTime()

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

所以你得到一个13位数字,这个数字很大但是每秒最多可以为你的数据库插入1000个!!

如果你认为13太多了,你可以将它降低到9但是包含一些代码行的字符。

首先从npm安装哈希。

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以避免冲突。