【问题标题】:hide event dates that are older than today in express and mongoose [duplicate]在 express 和 mongoose 中隐藏比今天更早的事件日期 [重复]
【发布时间】:2017-05-20 09:57:56
【问题描述】:

我有一个休息服务,它将所有事件存储在一个 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);
    });
});

【问题讨论】:

    标签: node.js mongodb rest express mongoose


    【解决方案1】:

    会带你到一个旧线程/这个

    Querying with mongoose and dates

    似乎正是你所需要的

    【讨论】:

      【解决方案2】:

      首先,您需要将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);
          });
      });
      

      参考:

      【讨论】:

      • 您可能想稍微更改一下昨天的日期。就像现在一样,它将排除过去 24 小时的事件。仅供参考,还有$gt(大于)选项。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-17
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多