【发布时间】: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