Строка, которая в данный момент выдает ошибку:
const instructorid = req.instructor._id;
Это потому, что req
на самом деле не RequestWithInstructor
, а Request
, предоставленный вам express. Вам нужно извлечь body
из него, прежде чем продолжить работу с логами c.
Следовательно, подпись должна быть:
public addClassRoom = async (req: Request, res: Response)
Предполагая, что addClassRoom
является методом, вызываемым при вызове API POST или PUT эта строка понадобится перед извлечением поля _id
.
const classbody = req.body;
Предполагается, что тело должно быть объектом JSON, соответствующим IClassRoom
интерфейс, вы можете либо привести тип к типу, а затем проверить его, например,
const classRoom = req.body as IClassRoom;
, либо вы можете превратить интерфейс в класс с конструктором (хотя это может не сработать с Mon goose), и в идеале добавьте метод проверки, который вы затем вызвали бы из контроллера, например:
const classRoom = new ClassRoom(req.body);
if (!classRoom.validate()) {
throw new Error('Invalid ClassRoom object');
}
Затем вы можете получить instructorId
как classRoom.instructor._id
, если он находится там, где он должен быть в JSON body.
Работа функции контроллера API должна состоять в том, чтобы взять JSON и проверить его, прежде чем он сможет выполнять взаимодействие Mon goose.