gpt4 book ai didi

Node.js:Mongoose 模式默认随机标记不是随机的

转载 作者:可可西里 更新时间:2023-11-01 09:24:29 26 4
gpt4 key购买 nike

我有一个像这样的 UserSchema,但我似乎无法生成唯一的随机 activation_token

我正在使用 rand-token 生成。 Found here .

 var UserSchema = new Schema({
activation_token: {
type: String,
default: randToken.generate(64),
},
email: {
type: String,
unique: true,
sparse: true
},
first_name: {
type: String
},
last_name: {
type: String
}
});

似乎工作正常,但是当使用 Mocha 运行单元测试时,所有 activation_token 字段都是相同的。我最初认为这与时间有关,因为这可能是用来生成 token 的。有可能对于每个新文档,时间戳都是相同的,所以我用一个函数运行了一些测试,一个接一个地生成大约 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
}
});

关于Node.js:Mongoose 模式默认随机标记不是随机的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30378886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com