Node.js:Mongoose模式默认rand标记不是随机的
我有一个这样的Node.js:Mongoose模式默认rand标记不是随机的,node.js,mongodb,random,default,uid,Node.js,Mongodb,Random,Default,Uid,我有一个这样的UserSchema,我似乎无法生成唯一的随机激活\u令牌 我正在使用rand令牌进行生成 似乎工作正常,但当使用Mocha运行单元测试时,所有的激活\u令牌字段都是相同的。我最初认为这与时间有关,因为这可能是用来生成令牌的。对于每个新文档,时间戳可能都是相同的,因此我使用一个函数运行了一些测试,该函数一个接一个地生成了大约30个令牌,它们并不相似 你知道这里发生了什么吗 以下是一些问题的示例: { "_id": { "$oid": "555dfd137c9
UserSchema
,我似乎无法生成唯一的随机激活\u令牌
我正在使用rand令牌
进行生成
似乎工作正常,但当使用Mocha运行单元测试时,所有的激活\u令牌
字段都是相同的。我最初认为这与时间有关,因为这可能是用来生成令牌的。对于每个新文档,时间戳可能都是相同的,因此我使用一个函数运行了一些测试,该函数一个接一个地生成了大约30个令牌,它们并不相似
你知道这里发生了什么吗
以下是一些问题的示例:
{
"_id": {
"$oid": "555dfd137c914edc1b41bbda"
},
"email": "oka@haek.io",
"first_name": "Lenora",
"last_name": "Aguilar",
"date_added": {
"$date": "2015-05-21T15:43:01.576Z"
},
"activation_token": "EyBNwu4vxOIXMzj7W5kVOeICfWwxfjXmHkz7ZPHLjkf0MU86QM2aIKNDyvI2YmTR",
"__v": 0
},
{
"_id": {
"$oid": "555dfd107c914edc1b41bbd6"
},
"email": "ediuki@mu.edu",
"first_name": "Eugene",
"last_name": "Green",
"date_added": {
"$date": "2015-05-21T15:43:01.576Z"
},
"activation_token": "EyBNwu4vxOIXMzj7W5kVOeICfWwxfjXmHkz7ZPHLjkf0MU86QM2aIKNDyvI2YmTR",
"__v": 0
}
它们都是一样的,这是有道理的。您在模式定义时调用generate
一次,并将该调用的结果提供给mongoose模式定义,而不是函数本身。您可以尝试以下方法:
var UserSchema = new Schema({
activation_token: {
type: String,
default: function() {
return randToken.generate(64);
}
},
email: {
type: String,
unique: true,
sparse: true
},
first_name: {
type: String
},
last_name: {
type: String
}
});
安装节点包
const randtoken = require('rand-token');
导入到js文件并生成令牌
const a=randtoken.generate(256
)
npm install rand-token --save
const randtoken = require('rand-token');