首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB文档过早到期(猫鼬)

MongoDB文档过早到期(猫鼬)
EN

Stack Overflow用户
提问于 2018-09-28 15:12:09
回答 1查看 1.1K关注 0票数 0

我将到期时间设置为24小时,但文档在大约5-10分钟后到期(我还没有精确地计时)。我做错了什么?我的模式:

代码语言:javascript
复制
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 }
});

在post路由中,我有条件地设置了日期,以便输入的客户端获得数据持久性。

代码语言:javascript
复制
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指南针上的时间戳时,它与我的时区相匹配。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-28 22:04:42

我测试了这个:

代码语言:javascript
复制
var TestSchema = new Schema({
  name: String,
  createdAt: { type: Date, expires: '2m', default: Date.now }
});

Documents在第二分钟后被删除,我还确认TTL索引是正确创建的(默认情况下是背景索引),TTL为120秒。

试试那个时间格式,看看它是否适合你。

还请注意,通过mongo模式对索引的任何预期更改都不会反映出来,直到手动删除前一个索引并启动应用程序来自动创建新索引。

MongoDB版本:3.6.5

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52558218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档