我正在为一家运输公司建立一个旅行预订网站。
我正在尝试在其中一页显示预订者的姓名。
我有一个用户模型和一个预订模型。
const mongoose = require("mongoose");
const passportLocalMongoose = require("passport-local-mongoose");
const Schema = mongoose.Schema;
const UserSchema = new Schema({
email: {
type: String,
required: true,
unique: true
},
firstName:{
type: String,
required: true
},
lastName: {
type: String,
required: true
},
phoneNumber: {
type: String,
required: true
},
gender: {
type: String,
enum: ["male", "female"]
}
});
UserSchema.plugin(passportLocalMongoose);
module.exports = mongoose.model("User", UserSchema);
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const BookingSchema = new Schema({
tripDate: {
type: String,
required: true
},
pickupTime: {
type: String,
required: true
},
pickupStreet: {
type: String,
required: true
},
pickupCity: {
type: String,
required: true
},
pickupState: {
type: String,
required: true
},
pickupZip: {
type: Number,
required: true
},
dropOffStreet: {
type: String,
required: true
},
dropOffCity: {
type: String,
required: true
},
dropOffState: {
type: String,
required: true
},
dropOffZip: {
type: Number,
required: true
},
booker: {
type: Schema.Types.ObjectId,
ref: "User"
}
}, {
timestamps: true
});
module.exports = mongoose.model("Booking", BookingSchema);
const express = require("express");
const router = express.Router();
const catchAsync = require("../utilities/catchAsync");
const ExpressError = require("../utilities/expressError");
const Booking = require("../models/booking");
const Joi = require("joi");
const {isLoggedIn} = require("../middleware/index");
const User = require("../models/user");
const mongoose = require("mongoose");
router.get("/booking/:id", catchAsync(async (req, res) => {
const booking = await Booking.findById(req.params.id).populate("booker");
console.log(booking);
if (!booking) {
req.flash("error", "Cannot find that booking");
return res.redirect("/booking");
}
res.render("booking/show", {booking});
}));
因此,当我在填充后控制台记录“预订”时,用户没有显示任何信息 日志上的模型。
答案 0 :(得分:0)
除非传递回调或您显式调用 execPopulate(),否则不会发生填充。第二次传递相同的路径将覆盖之前的路径选项。有关选项的说明,请参阅 Model.populate()。
代码更新:populate("booker").exec();
const booking = await Booking.findById(req.params.id).populate("booker").exec();