在使用mongoose-ttl或基本的MongoDB TTL后,ExpressJS Socket挂起

时间:2018-01-19 11:41:47

标签: node.js mongodb express mongoose

我使用ExpressJS和MongoDB使用MongooseJS编写Node.js服务器。

我有一个名为measurements的集合。我希望此集合中的每个文档仅在24小时内包含在数据库中。应删除每个超过24小时的文档。

为了实现这一目标,我使用了npm的mongoose-ttl软件包和MongoDB的内置TTL。

mongoose-ttl案例的代码:

const ttl = require('mongoose-ttl');

const weatherMeasurementsSchema = Schema({
    parentRoomId: { type: Schema.Types.ObjectId, ref: "Room" },
    temperature: Number,
    humidity: Number,
    createdAt: Date
});

weatherMeasurementsSchema.plugin(ttl, { ttl: "1m", interval: "1m" });

纯MongoDB案例的代码:

 db.measurements.createIndex( { "createdAt": 1 }, { expireAfterSeconds: 60})

出于测试目的,我将ttlinterval字段设置为仅1分钟,因此我可以提前收集结果。

mongoose-ttl和MongoDB的TTL都会正确删除数据,但在他们这样做之后,我的服务器崩溃并出现错误:Error: socket hang up

这可能是什么原因?

编辑:

我进一步调查了这一点,我发现的唯一事情就是在查询到该集合的数据库后抛出错误。

0 个答案:

没有答案