aquí está el esquema de reserva
const bookingSchema = new mongoose.Schema({ userId: { type: mongoose.Schema.Types.ObjectId, ref: "User", required: true, }, routeId:{ type: mongoose.Schema.Types.ObjectId, ref: "Route", required: true, } })En esta tabla, routeId (esquema de ruta) contiene la tabla Bus (referenciada).
const routeSchema = new mongoose.Schema({ location:{ type: mongoose.Schema.Types.ObjectId, ref: 'Location', required: true }, duration: { type: Number, required: true }, Bus:{ type: mongoose.Schema.Types.ObjectId, ref:"Bus", required: true }, date: { type:String, required: true }, }, { timestamps: true, });y finalmente el modelo de autobús
const busSchema = new mongoose.Schema( { busNumber: { type: String, unique: true, required: true, }, seats: { type: Number, }, }, { timestamps: true, } );Ahora quiero mostrar solo el número de autobús y no los datos completos del autobús. esta es la respuesta que estoy recibiendo. https://i.stack.imgur.com/S1qyZ.png
esta es la consulta que apliqué.
router.get("/bus/myBooking/one/:id", auth, async (req, res) => { const _id = req.params.id; const myBooking = await Booking.findById({ _id }) .populate({path: 'routeId', populate: 'Bus'}) .select(["-_id","-userId","-createdAt","-updatedAt","-__v","-passengers._id","-departureDetails._id","-arrivalDetails._id"]); try { return !myBooking ? res.status(404).send("No booking found") : res.status(200).send(myBooking); } catch (e) { res.status(500).send(); } });Este método funciona en algunas versiones de mongoose, así que puedes probar esto:
await Booking.findById({ _id }) .populate({ path: 'routeId', populate: { path: 'Bus', model: Bus, select:"-_id busNumber" } })