【问题标题】:How to make Mongoose Schema id generate a 16 digits random number如何让 Mongoose Schema id 生成 16 位随机数
【发布时间】:2020-09-26 02:49:26
【问题描述】:

我是猫鼬的新手。我正在创建一个模型(creditnote),它由一个 16 位唯一引用(用作主键)和一个表示学分数的整数组成。

我希望参考是模型的 ID,并且是自动生成的 16 位数字。我怎样才能做到这一点?

现在我有以下代码:

var mongoose = require('mongoose');
// Setup schema
var creditnoteSchema = mongoose.Schema({
reference: {
    type: mongoose.ObjectId,
    required: true,
    default: function(){
        // Generate 16 digits random number
        number = (Math.random()+' ').substring(2,10)+(Math.random()+' ').substring(2,10);

    }
},
amount: {
    type: Number,
    required: true,
    validate: {
        validator: Number.isInteger,
        message: '{VALUE} is not an integer value'
    }
}

});

【问题讨论】:

  • 你应该return你从函数中生成的数字。此外,您的函数可能不耐碰撞,并且不保证 16 位的长度。
  • @thammada 完全忘记了回报。我在 stackoverflow 的某个地方看到这个函数保证 16 位数字。知道如何使它抗碰撞吗?

标签: node.js mongodb mongoose mongoose-schema


【解决方案1】:

在 MongoDB 中创建的所有对象都有一个属性 _id,它用作唯一 ID。您还可以使用ObjectId 生成唯一密钥,如下所示:

const {ObjectId} = require('mongodb'); 
console.log(ObjectId());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多