gpt4 book ai didi

javascript - UserModel 不可分配给文档类型的参数 | nulll [带 typescript 的 Mongoose ]

转载 作者:搜寻专家 更新时间:2023-10-30 21:05:10 24 4
gpt4 key购买 nike

typescript 给我一个错误。该错误是由于 mongoose 期望搜索 promise 将使用 mongoose 文档(在本例中为用户文档)或“null”解析。 但是我想访问所有用户的方法,所以我必须指定该函数将用户的模型作为参数。但是这件事导致我出现以下错误:

“(user: UserModel) => Response”类型的参数不可分配给“(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);

最佳答案

model 函数接受集合文档类型的类型参数。 (它信任你;它没有任何方法来验证类型是否正确。)替换:

export default model("User", UserSchema);

与:

export default model<UserModel>("User", UserSchema);

然后对该集合的所有查询都将生成 UserModel 对象。

关于javascript - UserModel 不可分配给文档类型的参数 | nulll [带 typescript 的 Mongoose ],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53021514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com