类型 'string' 与类型 'FindOneOptions<User>' 没有共同的属性
Type 'string' has no properties in common with type 'FindOneOptions<User>'
我正在尝试使用 express.js 构建后端。我现在遇到以下问题:
import { Request, Response } from "express";
import { getManager } from "typeorm";
import { User } from "../entity/user.entity";
export const GetUser = async (req: Request, res: Response) => {
const repository = getManager().getRepository(User);
const { password, ...user } = await repository.findOne(req.params.id);
res.send(user);
};
总是出现以下错误:
(参数) req: Request>
类型 'string' 与类型 'FindOneOptions'.ts(2559) 没有共同的属性
router.ts
router.get("/api/users/:id", AuthMiddleware, GetUser);
user.entity.ts
import {
Column,
Entity,
JoinColumn,
ManyToOne,
PrimaryGeneratedColumn,
} from "typeorm";
import { Role } from "./role.entity";
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
first_name: string;
@Column()
last_name: string;
@Column({
unique: true,
})
email: string;
@Column()
password: string;
@ManyToOne(() => Role)
@JoinColumn({ name: "role_id" })
role: Role;
}
谁能帮我解决我的问题?
typeorm 的findOne
函数等同于Select * ... limit 1
。这意味着 findOne
实际上期望包含匹配条件的对象,并且 return 满足条件的第一个元素。
在您的情况下,代码应为:
repository.findOne({where: {id: parseInt(req.params.id, 10)}})
或
repository.findOneBy({id: parseInt(req.params.id, 10)})
这将找到其 id
字段将与 req.params.id
相匹配的用户。
我正在尝试使用 express.js 构建后端。我现在遇到以下问题:
import { Request, Response } from "express";
import { getManager } from "typeorm";
import { User } from "../entity/user.entity";
export const GetUser = async (req: Request, res: Response) => {
const repository = getManager().getRepository(User);
const { password, ...user } = await repository.findOne(req.params.id);
res.send(user);
};
总是出现以下错误:
(参数) req: Request
router.get("/api/users/:id", AuthMiddleware, GetUser);
user.entity.ts
import {
Column,
Entity,
JoinColumn,
ManyToOne,
PrimaryGeneratedColumn,
} from "typeorm";
import { Role } from "./role.entity";
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
first_name: string;
@Column()
last_name: string;
@Column({
unique: true,
})
email: string;
@Column()
password: string;
@ManyToOne(() => Role)
@JoinColumn({ name: "role_id" })
role: Role;
}
谁能帮我解决我的问题?
typeorm 的findOne
函数等同于Select * ... limit 1
。这意味着 findOne
实际上期望包含匹配条件的对象,并且 return 满足条件的第一个元素。
在您的情况下,代码应为:
repository.findOne({where: {id: parseInt(req.params.id, 10)}})
或
repository.findOneBy({id: parseInt(req.params.id, 10)})
这将找到其 id
字段将与 req.params.id
相匹配的用户。