У меня есть эта схема в понедельник goose
ProfileEmailSchema = module.exports = mongoose.Schema({
username: {
type: String,
unique: true,
index: true,
required: true
},
password: {
type: String,
required: true
},
profile: { type: Number, unique: true, required: true, index: true },
email: {
type: String,
required: true,
unique: true,
index: true
},
fullname: {
type: String,
required: true
},
display_picture: {
type: String
},
isProfileCompleted: {
type: Boolean,
deafult: false
},
profile: created_at: { type: Date, default: Date.now },
updated_at: { type: Date, default: Date.now }
});
ProfileEmailSchema.pre('save', function(next) {
log("Saving Profile Data :");
now = new Date();
this.updated_at = now;
if (!this.created_at) {
this.created_at = now
}
next();
});
ProfileEmailSchema.pre("save", function(next) {
var user = this;
// only hash the password if it has been modified (or is new)
if (!user.isModified('password')) return next();
// generate a salt
bcrypt.genSalt(10, function(err, salt) {
if (err) return next(err);
// hash the password using our new salt
bcrypt.hash(user.password, salt, function(err, hash) {
if (err) return next(err);
// override the cleartext password with the hashed one
user.password = hash;
next();
});
});
});
// test Function
ProfileEmailSchema.methods.find = function(cb) {
this.model('ProfileEmailModel').findOne({}, cb);
};
//Pass Comparison Function
ProfileEmailSchema.methods.comparePassword = function(password, cb) {
log("Compare Password with HASHED pass");
log(password);
log("HASHED");
log(this.password);
bcrypt.compare(password, this.password, function(err, isMatch) {
if (err) return cb(err);
log("Return Status:");
log(isMatch);
cb(null, isMatch);
});
};
ProfileEmailModel = module.exports = mongoose.model("ProfileEmailModel", ProfileEmailSchema);
Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно скопировать _id в поле профиля при выполнении следующей операции
var tuple = new UserProfileModel({
username: profile.username,
email: profile.email,
fullname: profile.fullname,
password: profile.password,
});
console.log(tuple);
Я пытаюсь использовать, как это, но безрезультатно
var tuple = new UserProfileModel({
username: profile.username,
email: profile.email,
fullname: profile.fullname,
password: profile.password,
profile : mongoose.Schema.Types.ObjectId
});
console.log(tuple);
Но это не работает. При создании первого документа с использованием tuple.save()
мне нужно убедиться, что _id
копируется в ключ profile
при создании новых документов.
Пожалуйста, предложите. В противном случае мне потребуется внести изменения в приложение, которое будет снова через 4 месяца.