-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
roperty 'id' does not exist on type 'User'.
22.01.13 15:05 작성 조회수 694
0
안녕하세요 제로초님,
node Ts 공부를 하고 있습니다.
다름이 아니라 여기 코드에서 req.user.id 부분에서 자꾸 에러가 발생합니다.
왜 발생하는 지 모르겠네요.
type update 되고 오류가 나는 것 인지..
passport 에서도 별 문제가 없는 거 같은데.
return new TSError(diagnosticText, diagnosticCodes);
TSError: ⨯ Unable to compile TypeScript:
routes/user.ts:120:32 - error TS2339: Property 'id' does not exist on type 'User'.
120 where: { id: req.user!.id },
// router/user
router.patch('/username', isLoggedIn, async (req, res, next) => {
try {
await User.update({
username: req.body.username,
}, {
where: { id: req.user!.id }, // Error
});
res.send(req.body.username);
} catch (e) {
console.error(e);
next(e);
}
});
// models user.ts
class User extends Model {
public id!: number;
public nickname!: string;
public userId!: string;
public password!: string;
public readonly createdAt!: Date;
public readonly updatedAt!: Date;
}
// passport index.ts
import passport from 'passport';
import User from '../models/user';
import local from './local';
export default () => {
// serializerUser 메서드를 사용하여 사용자 정보를 Session에 저장할 수 있습니다.
// session에 저장할 정보 done(null,user) 과 같이 두번쨰 인자로 넘기면 됩니다.
// passport.serializeUser((user: User, done: any) => done(null, user.id));
passport.serializeUser((user: any, done) => {
done(null, user.id)
});
// 로그인 되어 있을 경우 모든 사용자 페이지를 접근할 경우.
// deserializeUser 가 발생합니다. -> session에 저장된 값을 이용해.
// 사용자 Profile 찾은 후, HTTP Request 리턴합니다.
passport.deserializeUser<number>(async (id: number, done) => {
try {
const user = await User.findOne({
where: { id },
});
return done(null, user); // req.user
} catch (err) {
console.error(err);
return done(err);
}
});
local();
}
답변을 작성해보세요.
0
답변 1