【发布时间】:2020-05-02 13:26:25
【问题描述】:
您好,我正在尝试在我的 Express 项目中填充两个文档。我正在创建一个 Classroomschema ,并且它有一个针对讲师模式的参考。
import * as mongoose from 'mongoose';
const Schema = mongoose.Schema;
import { IClassRoom } from '../interface/IClassRoom';
const ClassRoomSchema = new Schema({
instructor: {
ref: 'Instructor',
type: Schema.Types.ObjectId
},
classRoomName: {
type: String,
required: true
},
classRoomDescription: {
type: String,
required: true
},
creationDate: {
type: Date,
default: Date.now
},
classRoomGenre: {
type: String,
required: true
},
classRoomSkills: {
type: String,
required: true
},
classRoomVideo: {
type: String,
},
classRoomLevel: {
type: String
}
});
const ClassRoomModel = mongoose.model<IClassRoom>('Classroom', ClassRoomSchema);
export default ClassRoomModel;
我为我的每个模式创建了一个接口。然后我用接口 Instructor 的类型创建了一个接口 Request
import { Request } from 'express';
import { Instructor } from './IInstructor';
export interface RequestWithInstructor extends Request {
instructor: Instructor;
}
我在我的 classRoom 控制器中调用接口,因为我想添加一个带控制器的教室,在控制台上我收到错误 UnhandledPromiseRejectionWarning: TypeError: Cannot read property '_id' of undefined。我想知道是否有人可以帮助我。 这是代码
import { Request, Response } from 'express';
import ClassRoomModel from '../model/ClassRoomModel';
import InstructorModel from '../model/InstructorModel';
import { RequestWithInstructor } from '../interface/RequestC';
export class ClassRoomController {
public getAllClassRoom = async (req: Request, res: Response) => {
const classRoom = await ClassRoomModel.find()
res.json(classRoom);
}
public addClassRoom = async (req: RequestWithInstructor, res: Response) => {
const instructorid = req.instructor._id;
const classbody = req.body;
const instructor = await InstructorModel.findById(instructorid);
const newClassRoom = new ClassRoomModel({
...classbody,
classRoomVideo: req.file.path,
instructor: instructor
});
const savedClassRoom = await newClassRoom.save();
res.json(savedClassRoom);
}
【问题讨论】:
标签: node.js mongodb typescript express mongoose