2016-03-28 19 views
0

Ich habe Probleme damit, Dokumente mit der TTL-Methode aus mongodb zu entfernen. Es soll Dokumente nach maximal 1.10min löschen, aber lebt für immer.Mongodb TTL mit node.js

Hier ist mein Code:

Das Modell:

var mongo = require('mongoose'), 
Schema = mongo.Schema; 

var article = new Schema({ 
createdAt: { type: Date, expires: '10s'}, 
title: {type: String}, 
author: {type: String}, 
year: {type: String}, 
abstract: {type: String}, 
article: {type: String}, 
score: {type: String}, 
category: {type: String}, 
link1: {type: String}, 
link2: {type: String} 
}); 

module.exports = mongo.mod 

Die App:

var express = require('express'); 
var mongoose = require('mongoose'); 
var bodyParser = require('body-parser'); 

var db = mongoose.connect('mongodb://localhost/sasapi'); 

var article = require('./models/article'); 

const port = 3000; 
var app = express(); 

app.use(bodyParser.json()); 
var sasRouter = express.Router(); 

sasRouter.route('/articles') 
    .post(function(req, res) { 
var art = new article(req.body); 

    art.save(); 
     res.send("Artikkelen \"" + art.title +"\" lagt til!"); 

}) 
.get(function (req, res) { 
    var filter = {}; 
    if (req.query.title){ 
     filter.title = req.query.title; 
    } 
    if(req.query.author){ 
     filter.author = req.query.author; 
    } 
    article.find(filter, function(err, articles){ 
    if(err){ 
    res.status(500).send(err); 
    }else{ 
    if(!articles.length){ 
     res.send("Ingen treff på filtrering") 
    }else { 

     res.json(articles); 
    } 
    } 
    }); 

}); 
+0

Mongoose wird einen vorhandenen Index nicht ändern, so ist das Problem oft, dass der Index immer noch so ist, wie er beim ersten Erstellen war. Können Sie Ihre Frage so bearbeiten, dass sie die Ausgabe von 'db.articles.getIndexes()' enthält? – JohnnyHK

Antwort

0

Sie benötigen einen Index auf dieser Spalte zu erstellen.

// Expire at the time indicated by the createdAt field 
article.index({ createdAt: 1 }, { expireAfterSeconds : 10 });