我有这样的UserSchema,我似乎无法生成独特的随机activation_token. 我正在使用rand-token进行生成. Found here. var UserSchema = new Schema({ activation_token: { type: String, default: randToken.generate(64), }, email: {
我正在使用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字段都是相同的.我最初认为这与时间有关,因为这可能是用于生成令牌的内容.对于每个新文档,时间戳可能是相同的,所以我使用一个函数生成了一些测试,这个函数一个接一个地生成了大约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 }它们都是一样的,这是有意义的.您在模式定义时调用生成一次,并且您将该调用的结果提供给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 } });