在express和mongoose中隐藏比今天更早的事件日期

时间:2017-01-05 18:27:57

标签: node.js mongodb rest express mongoose

我有一个休息服务,可以将所有事件存储在一个mongodb中并对它们进行排序,但是如何在当前日期和时间之后不显示这些事件?

//return all events
router.get('/', function(req, res, next) {
    Event.find({}, null, {sort: {date: 1}}, function(err, events) {
        if (err) return next(err);
        res.json(events);
    });
});

2 个答案:

答案 0 :(得分:1)

将指向一个旧的线程w / this

Querying with mongoose and dates

似乎正是您所需要的

答案 1 :(得分:0)

首先,您需要在事件模型中添加created(或者您想将其命名为createdAt等)。您可以使用这样的函数自动设置保存日期:

var eventSchema = new mongoose.Schema({...});

eventSchema.pre('save', function(next) {
  var currentDate = new Date();
  this.created = currentDate;
  next();
});

将此功能放在您定义猫鼬模型的位置下。

然后您可以使用MongoDB支持的$lt(小于)选项:

router.get('/', function(req, res, next) {
    // Get date of yesterday
    var yesterday = new Date();
    yesterday.setDate(yesterday.getDate() - 1);
    // Find every event that was created yesterday or the days before.
    Event.find({ created: { $lt: yesterday } }, function(err, events) {
        if (err) return next(err);
        res.json(events);
    });
});

参考: