猫鼬根据日期范围检索数据

时间:2018-10-28 09:57:50

标签: javascript date mongoose

我无法从猫鼬的日期范围中检索数据,而无法从GET发送间隔。

我有两个嵌套有不同信息的用户模式。 当我以这种格式('YYYY-MM-DD')在URL中传递'from'和'to'时,我将其转换为Date对象,然后在查询中传递它,但是返回CastError或所有没有日期的练习过滤。

我尝试使用

填充populate()
{path: 'exercise', match: { date: { $gte: from, $lt: to }}}

但是给我所有练习。

我尝试过.toISOString,然后将其传递到新的Date()中,但是不起作用。

我真的很坚持……

var Schema = mongoose.Schema;

var exerciseSchema = new Schema({
  description: {type: String},
  duration: {type: Number},
  date: {type: Date}
});

var userSchema = new Schema({
  username: {type: String, required: true},
  userId: String,
  exercise: {type: [exerciseSchema], default: []}
});

var User = mongoose.model('User', userSchema);


app.route("/api/exercise/log/:user_id?")
  .get((req, res) => {
    let userId = req.params.user_id;

    //if there's 'from' & 'to' query with date range
    if(req.query.from && req.query.to){
      let start = new Date(req.query.from);
      let end = new Date(req.query.to);
      let start2 = start.toISOString();
      let end2 = end.toISOString();

      User.find({"_id": userId, exercise: {date: {$gte: start, $lt: end}}}, (err, data)=> {

        return res.send({...data[0]._doc, "total-exercise": data[0]._doc.exercise.length});

      });
    }


     //else retrieve user log [works]
     User.findById({"_id": userId}).select('_id username exercise.description exercise.duration exercise.date').exec((err, data) => {
       res.send({...data._doc, "total-exercise": data.exercise.length});
     });

  });

0 个答案:

没有答案