Я не могу получить данные из диапазона дат с помощью 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});
});
});