こんにちは、これは私のマングース スキーマで、パスワード リセット リンクに含まれるユーザー トークンを作成する方法があります。また、ユーザーが作成された後、新しいトークンを正確に呼び出す方法がわからない場合、User.save または User.findAndUpdate を使用して、トークンをルート ファイルに含めますか? また、ここで暗号化されたトークンから取得される値として、トークン フィールド内に何を挿入すればよいでしょうか?
ファイルは次のとおりです。
var mongoose = require('mongoose'),
Schema = mongoose.Schema,
ObjectId = mongoose.Schema.Types.ObjectId,
bcrypt = require('bcrypt-nodejs'),
SALT_WORK_FACTOR = 10;
var crypto = require('crypto');
var UserToken;
var UserSchema = new Schema({
email: { type: String, required: true, lowercase:true, index: { unique: true } },
password: { type: String, required: true },
firstName: {type: String, required: true},
lastName: {type: String, required: true},
phone: {type: Number, required: true},
birthday: {type: Date, required: true},
friendRequest: {type: Object},
notifications: {type: Object},
friend: {type: Object},
date_created: {type: Date},
token: {type: String}
}, {collection: "users"});
UserSchema.statics.new = function(_id, fn) {
var user = new UserToken();
crypto.randomBytes(48, function(ex, buff) {
var token = buff.toString('based64').replace(/\//g, '_').replace(/\+/g, '-');
user.token = _id + '|' + token.toString().slice(1,24);
user._id = _id;
user.save(fn);
});
};
module.exports = mongoose.model('User', UserSchema);