如何使用TTL和mongoose从数组中删除对象?

时间:2017-08-31 12:50:25

标签: node.js mongodb mongoose

我想使用mongoose通过TTL从我的用户架构中删除令牌数组中的令牌, 当我在数组外部使用createdAt: { type: Date, default: Date.now }, expireAt: { type: Date, default: undefined }时,文档将被删除。 但是当我把它们放在数组中时 - 没有任何反应。

希望你能帮助我,这是我的代码:

var UserSchema2 = new mongoose.Schema({
    email: {
        type: String,
        required: true
    },
    tokens: [{
        access:{
            type: String,
                    required: true
        },
        token:{
            type: String,
                    required: true,
        },
        createdAt: { type: Date, default: Date.now },
        expireAt: { type: Date, default: undefined }
    }]
});
UserSchema2.index({"expireAt": 1 }, { expireAfterSeconds: 5 } );

这里是保存文档的中间件:

app.get('/test', (req, res) => {
    var tokens = [];
    tokens.push({access: 'abc', token: 'myToken123', expireAt: new Date(req.query.date)});

    var user = new User2({
        email: 'example@gmail.com',
            tokens: tokens,
    })
    user.save().then( (doc) => {
        res.send(doc);
    }).catch( (err) => {
        res.send(err);
    });
});

0 个答案:

没有答案