即使条件为 false,Mongoose TTL 也会过期

问题描述 投票:0回答:1

我有这个猫鼬模式,如果支付字段为假,我希望模型在 60 秒后删除自身。 但是,当使用 TTL 时,即使“paid”字段为 true,文档也会过期。 我什至尝试在架构内创建 TTL,但没有成功。我该怎么办?

const mongoose = require('mongoose');

const donationSchema = new mongoose.Schema({
    user: { type: mongoose.SchemaTypes.ObjectId, ref: 'User' },
    ngo: { type: mongoose.SchemaTypes.ObjectId, ref: 'Ngo', required: true },
    type: { type: String, default: 'ads', required: true },
    amount: { type: Number },
    iat: { type: Date, default: Date.now },
    paid: {
        type: Boolean,
        default: false,
    },
    orderID: { type: String },
});

donationSchema.index(
    { createdAt: 1 },
    {
        expireAfterSeconds: 60,
        partialFilterExpression: { paid: false },
    },
);

function autoPopulateChildren(next) {
    this.populate('user', 'fullName level avatar country -_id');
    next();
}

donationSchema.pre('find', autoPopulateChildren);

module.exports = new mongoose.model('Donation', donationSchema);
javascript reactjs mongodb mongoose
1个回答
0
投票

有人知道出了什么问题吗?谢谢

© www.soinside.com 2019 - 2024. All rights reserved.