如何在猫鼬模型中自动增加字段值[重复]

Posted

技术标签:

【中文标题】如何在猫鼬模型中自动增加字段值[重复]【英文标题】: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
    
);

【问题讨论】:

【参考方案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 以避免冲突。

【讨论】:

在同一毫秒内发生多个插入是可能的,所以这并不总是有效。

以上是关于如何在猫鼬模型中自动增加字段值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在猫鼬中自动创建必填字段

在猫鼬中更新它们时如何访问每个文档字段[重复]

如何在猫鼬的嵌入式文档中填充字段?

如何在猫鼬中更新嵌套数组值

如何在猫鼬(打字稿)中获取模型的_id

在猫鼬中,如果我正在创建一个包含 4 个字段的模式。但我只保存两个字段的值。如何更新未给出的字段值?