MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Данните от Mongoose изтичат, но се запазват в базата данни

Трябва да използвате концепцията за справка на схема за това. Запазете вашите изтекли поле в друга таблица и се присъединете към вашата главна user_table и expire_table (wxпримерно име)

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да използвам оператори за агрегиране в $match в MongoDB (например $year или $dayOfMonth)?

  2. MongoDB Много индекси срещу единичен индекс на масив от поддокументи?

  3. Импортиране на csv в mongodb с помощта на PHP код

  4. DB-ref в mongoose без Schema.ObjectId?

  5. MongoDB:задайте потребител/парола за достъп до db