Mongoose извлекает данные на основе диапазона дат - PullRequest
0 голосов
/ 28 октября 2018

Я не могу получить данные из диапазона дат с помощью mongoose, отправив интервал из GET.

У меня есть две пользовательские схемы, вложенные с различной информацией.Когда я передаю 'from' & 'to' в URL в этом формате ('YYYY-MM-DD'), я преобразую его в объект Date, а затем передаю его в запросе, но возвращаю CastError или все упражнения без датыфильтрация.

Я пытался заполнить () с

{path: 'exercise', match: { date: { $gte: from, $lt: to }}}

, но дает мне все упражнения.

Я попробовал .toISOString и затем передал его в новой дате (), но не работает.

Я действительно застрял с этим ...

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});
     });

  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...