आपको स्कीमा संदर्भ . की अवधारणा का उपयोग करना चाहिए इसके लिए। अपना समाप्त Save सहेजें किसी अन्य तालिका में फ़ील्ड करें और अपने मुख्य user_table
. में शामिल हों और expire_table
(wxample नाम)
var UserSchema = new Schema({
name: String,
email: String
});
//save date by-default
//expire in 1 min as in your example
var expireSchema = new Schema({
createdAt: { type: Date, default: Date.now, expires: '1m' },
user_pk: { type: Schema.Types.ObjectId, ref: 'user_expire'}
});
var userTable = mongoose.model('user_expire', UserSchema);
var expireTable = mongoose.model('expireMe', expireSchema);
//Save new user
var newUser = new userTable({
name: 'my_name',
email: 'my_email'
});
newUser.save(function(err, result) {
console.log(result, 'saved')
var newExpire = new expireTable({
user_pk:result._id
});
//use _id of new user and save it to expire table
newExpire.save(function(err, result) {
console.log('saved relation')
})
})
अब यह पता लगाने के लिए कि सत्र समाप्त हो गया है या नहीं
<मजबूत>1. डेटा समाप्त होने से पहले इस कोड को निष्पादित करने पर
expireTable.findOne()
.populate('user_pk')
.exec(function (err, result) {
if (err) throw err;
console.log(result)
if(result == null) {
console.log('session has expired, renew session')
} else {
console.log('session is active')
}
});
//output - session is active
<मजबूत>2. डेटा समाप्त होने के बाद इस कोड को निष्पादित करने पर
expireTable.findOne()
.populate('user_pk')
.exec(function (err, result) {
if (err) throw err;
console.log(result)
if(result == null) {
console.log('session has expired, renew session')
} else {
console.log('session is active')
}
});
//output - session has expired, renew session