Машинопись дает мне ошибку. Ошибка связана с тем, что mongoose ожидает, что обещание поиска будет выполнено с документом mongoose (в данном случае это документ пользователя) или «null».
Но я хочу получить доступ ко всем методам пользователя, поэтому я должен указать, что эта функция будет принимать модель пользователя в качестве аргумента. Но эта вещь вызывает у меня следующую ошибку:
Аргумент типа '(user: UserModel) => Ответ' не может быть назначен параметру типа '(res: Document | null) => void | Ответ | PromiseLike.
Это код:
import express, { Request, Response } from "express";
import User, { UserModel } from "../../models/User";
// router
const router = express.Router();
// @route GET api/user/username/:username
// @access Public
router.get("/username/:username", (req: Request, res: Response) => {
User.findOne({ username: req.params.username })
.then((user: UserModel | null) => res.json(user))
.catch(err => res.json(err));
});
export default router;
Это модель пользователя:
import mongoose, { Schema, model } from "mongoose";
export type UserModel = mongoose.Document & {
name: string;
username: string;
email: string;
password: string;
avatar: string;
created_at: Date;
};
export const UserSchema = new Schema({
name: {
type: String,
required: true
},
username: {
type: String,
required: true,
unique: true
},
email: {
type: String,
unique: true
},
password: {
type: String,
required: true
},
avatar: {
type: String
},
created_at: {
type: Date,
default: Date.now
}
});
export default model("User", UserSchema);