我无法从猫鼬的日期范围中检索数据,而无法从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});
});
});