我正在嘗試使用 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<ParamsDictionary, any, any, QueryString.ParsedQs, Record<string, any>> 型別“字串”與型別“FindOneOptions”沒有共同的屬性。ts(2559)
router.ts
router.get("/api/users/:id", AuthMiddleware, GetUser);
用戶物體.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;
}
誰能幫我解決我的問題?
uj5u.com熱心網友回復:
typeorm 的findOne功能等價于Select * ... limit 1. 這意味著findOne實際上期望包含條件的物件匹配并回傳滿足條件的第一個元素。
在您的情況下,代碼應為:
repository.findOne({where: {id: parseInt(req.params.id, 10)}})
要么
repository.findOneBy({id: parseInt(req.params.id, 10)})
這將找到其id欄位匹配的用戶req.params.id。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/450795.html
上一篇:一旦反應狀態為空,觸發一些API
