Документы MongoDB истекают слишком рано (Мангуст) - PullRequest
0 голосов
/ 28 сентября 2018

Я установил срок действия на 24 часа, но срок действия документов истекает через 5-10 минут (я точно не рассчитал время).Что я делаю неправильно?Моя схема:

const collectionSchema = new mongoose.Schema({
  userId: {
    type: mongoose.Schema.Types.ObjectId,
    ref: "User"
  },
  name: {
    type: String,
    maxLength: 30,
    required: true
  },
  entries: [{ type: mongoose.Schema.Types.ObjectId, ref: "Entry" }],
  expireAt: { type: Date, expires: 60 * 60 * 24 }
});

В почтовом маршруте я условно устанавливаю дату так, чтобы инлогированные клиенты получали постоянство данных.

router.post("/", auth, async (req, res) => {
  let date = null;
  if (!req.user) {
    date = new Date();
  }
  try {
    const collection = {
      userId: req.body.userId,
      name: req.body.name,
      expireAt: date
    };
    const newCollection = await Collection.create(collection);
    res.send(newCollection);
  } catch (error) {
    res.send(error.message);
  }
});

Я думал, что у меня проблема с часовым поясом, но когда я проверяю отметку времени в компасе MongoDB, она совпадает с моим часовым поясом.Что я делаю не так?

1 Ответ

0 голосов
/ 29 сентября 2018

Я проверил это:

var TestSchema = new Schema({
  name: String,
  createdAt: { type: Date, expires: '2m', default: Date.now }
});

Документы были удалены после второй минуты, и я также подтвердил, что индекс TTL был создан правильно (как фоновый по умолчанию) с TTL 120 секунд.

Попробуйте этот формат времени и посмотрите, подходит ли он вам.

Также обратите внимание, что любые ожидаемые изменения индекса через вашу схему Монго не будут отражены, пока вы вручную не удалите предыдущийиндексировать и запустить приложение для автоматического создания нового.

Версия MongoDB: 3.6.5

...