我在我的node.js应用程序中使用此方案进行会话 var mongoose = require('mongoose');var Schema = mongoose.Schema;// define the schema for our user session modelvar UserSessionSchema = new Schema({ sessionActivity: { type: Date,
          var mongoose     = require('mongoose');
var Schema       = mongoose.Schema;
// define the schema for our user session model
var UserSessionSchema   = new Schema({
    sessionActivity:    { type: Date, expires: '15s' }, // Expire after 15 s
    user_token:         { type: String, required: true }
});
module.exports = mongoose.model('UserSession', UserSessionSchema); 
 我在我的应用程序中创建了一个“会话”:
...
var session = new Session();
session.user_token = profile.token;
session.save(function(save_err) {
    if (save_err) {
        ....
    } else {
        // store session id in profile
        profile.session_key = session._id;
        profile.save(function(save_err, profile) {
            if (save_err) {
                ...
            } else {
                res.json({ status: 'OK', session_id: profile.session_id });
            }
});
... 
 问题是文件永久存在,永不过期.它应该只能活15秒(最多一分钟).我的代码有什么问题?我试图将expries:字符串设置为数字,即15,字符串’15s’,依此类推.
var UserSessionSchema   = new Schema({
    sessionActivity:    { type: Date, expires: '15s', default: Date.now }, // Expire after 15 s
    user_token:         { type: String, required: true }
}); 
 TTL索引在其值(应该是日期或日期数组)已经过去之后删除文档’x’秒. TTL每分钟检查一次,因此它可能比您给定的15秒更长一些.
要为日期指定默认值,可以使用Mongoose中的默认选项.它接受一个功能.在这种情况下,Date()返回当前时间戳.这会将日期设置为当前时间一次.
你也可以走这条路:
UserSessionSchema.pre("save", function(next) { 
    this.sessionActivity = new Date(); 
    next(); 
}); 
 这将在每次调用.save()时更新值(但不是.update()).
