【发布时间】:2021-09-29 11:06:00
【问题描述】:
您好我想问一下如何获取当前登录用户的预订数据,
架构模型分为 2 个文件(userModels 和 bookingModels)
用户模型
const crypto = require('crypto');
const mongoose = require('mongoose');
const bcrypt = require('bcryptjs');
const validator = require('validator');
const userSchema = new mongoose.Schema({
name: {
type: String,
required: [true, 'Please tell us your name!'],
},
email: {
type: String,
required: [true, 'Please provide your email'],
unique: true,
lowercase: true,
validate: [validator.isEmail, 'Please provide a valid email'],
},
role: {
type: String,
enum: ['user', 'admin'],
default: 'user',
},
password: {
type: String,
required: [true, 'Please provide a password'],
minlength: 8,
select: false,
},
passwordConfirm: {
type: String,
required: [true, 'Please confirm your password'],
validate: {
validator: function (el) {
return el === this.password;
},
message: 'Passwords are not the same!',
},
},
passwordChangedAt: Date,
passwordResetToken: String,
passwordResetExpires: Date,
active: {
type: Boolean,
default: true,
select: false,
},
});
const User = mongoose.model('User', userSchema);
module.exports = User;
预订模式
const bookingSchema = new mongoose.Schema(
{
corporate: {
type: mongoose.Schema.ObjectId,
ref: 'User',
required: [true, 'Must belong to a User'],
},
thumbnail: {
type: String,
required: [true, 'Must have a link'],
validate: [validator.isURL, 'Please provide a valid URL address'],
},
{
toJSON: { virtuals: true },
toObject: { virtuals: true },
}
);
bookingSchema.pre(/^find/, function (next) {
this.populate({
path: 'corporate',
select: 'name',
});
next();
});
const Booking = mongoose.model('Booking', bookingSchema);
module.exports = Booking;
这是渲染到前端 pug 的服务/处理程序
const Booking = require('../models/bookingModels');
const User = require('./../models/userModels');
exports.getMyBooking = catchAsync(async (req, res, next) => {
const bookings = await Booking.find(req.user.id, {
corporate: req.body.corporate,
thumbnail: req.body.thumbnail,
});
res.status(200).render('package', {
title: 'My Package',
bookings,
});
});
我的 PUG 文件或多或少
extends base
block content
main.main
form.form.form-user-data
.form__group
label.form__label(for='corporate') Name
input#name.form__input(type='text', value=`${booking.corporate}`, required, name='name')
.form__group.ma-bt-md
label.form__label(for='thumbnail') Detail
input#email.form__input(type='text', value=`${booking.thumbnail}`, required, name='thumbnail')
我认为其他路由器没有问题,但它在前端页面控制台中一直显示为“find()的参数“过滤器”必须是一个对象”
不太确定代码有什么问题,因为这是我的第一个项目。
非常感谢!!
【问题讨论】:
标签: node.js mongodb mongoose pug