我有这个猫鼬模式,如果支付字段为假,我希望模型在 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);
有人知道出了什么问题吗?谢谢