Quiero obtener todos los datos coincidentes de un objeto, pero obtengo una matriz vacía.
Aquí está la tabla de ubicación:
const locationSchema = new mongoose.Schema( { location: { name: { type: String, unique: true, required: true, lowercase: true, }, subLocation: [String], }, }, { timestamps: true, } );y está incrustado en la tabla de rutas:
const routeSchema = new mongoose.Schema( { location: { from: { type: mongoose.Schema.Types.ObjectId, ref: "Location", required: true, }, to: { type: mongoose.Schema.Types.ObjectId, ref: "Location", required: true, }, }, busId: { type: mongoose.Schema.Types.ObjectId, ref: "Bus", required: true, }, date: { type: String, required: true, }, departureTime: { type: Number, required: true, }, arrivalTime: { type: Number, required: true, }, }, { timestamps: true, } ); Ahora estoy ejecutando una consulta para obtener los datos coincidentes de la tabla de rutas, pero obtengo una matriz vacía. http://127.0.0.1:3000/trips?from=6295871d69217e9c28cf7f19&to=6295874869217e9c28cf7f1c&date=2022-06-02 aquí está la consulta:
router.get("/trips", async (req, res) => { if (!req.query.from || !req.query.to || !req.query.date) { return res.send({ error: "Please enter the data to get the trip", }); } const { from, to, date } = req.query; const routes = await Route.find({ from, to, date, }); Otra pregunta: estoy pasando una identificación como valor ahora quiero pasar el valor como una picadura como esta: from=Mumbai&to=Ahmedabad&date=2022-06-02 . ¿Como hacer eso? porque cada vez que hago eso me sale un error de conversión
Le sugiero que cambie el esquema de ubicación para tener desde y hacia ubicaciones por separado, como se muestra a continuación.
const locationSchema = new mongoose.Schema( { fromLocation: { name: { type: String, unique: true, required: true, lowercase: true, }, subLocation: [String], }, toLocation: { name: { type: String, unique: true, required: true, lowercase: true, }, subLocation: [String], }, }, { timestamps: true, } );Por lo tanto, el esquema de ruta debería verse así
const routeSchema = new mongoose.Schema( { location: { type: mongoose.Schema.Types.ObjectId, ref: "Location", required: true, }, date: { type:String, required: true }, .... ....Y luego hacer algo como esto...
let locations = await Location.find({ 'fromLocation.name': from, 'toLocation.name': to, });Después
const ids = locations.map(location => location._id) const routes = await Route.find({$and: [{location : {$in: ids}},{date}]}); const route = routes.find(()=>{ return ([{ date }, { routes }]) });