따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
auth.ts에서 //비번이 맞으면 토큰 생성 const token = jwt.sign({username}, process.env.JWT_SECRET) console.log(token) //쿠키 저장 res.set("Set-Cookie", cookie.serialize('token', token)); return res.json({user, token}); token은 잘 찍히고 요청 헤더에 포함되어 있는데 TypeError serialize 부분에서 에러가 뜨고 실제 응답 에러가 납니다.... 쿠키 저장이 안되는 것 같습니다. serialize가 undefine 되었다는데 위에 const token으로 제대로 선언되고 출력까지 잘 되는데 이유를 모르겠습니다...
따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
아래 질문 관련입니다. server.ts origin 부분을 강사님처럼 다음과 같이 작성하면 header 오류가 납니다. const origin = process.env.ORIGIN; app.use(cors({ origin, credentials: true })) 근데 아래처럼 const origin을 다음과 같이 환경변수를 거치지 않고 명시하면 헤더 오류 대신 500 오류가 나면서 토큰이 생성되지 않습니다. (로그인 페이지에서 로그인 시) const origin = 'http://localhost:3000'; app.use(cors({ origin, credentials: true })) 서버에서 process.env.ORIGIN, process.env.JWT_SECRET을 찍어봤을땐 잘 나오는데... 이 이유로 //비번이 맞으면 토큰 생성 const token = jwt.sign({username}, process.env.JWT_SECRET) 이 명령줄이 제대로 실행되지 않는 걸까 싶어 process.env.JWT_SECRET를 'super_secret'으로 바꿔봐도 똑같은 증상입니다. 확실하진 않지만 이 때문에 토큰 생성에 오류가 생겨서 500 에러가 뜨는 것인가 싶은데 어떻게 해결하면 좋을까요?
따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
import {Router, Request, Response} from "express"; import {User} from "../entities/User"; import { validate, Validate } from "class-validator"; const register = async (req: Request, res: Response) => { const {email, username, password} = req.body; try{ let errors: any = {}; //이메일/유저이름 단일성 확인 const emailUser = await User.findOneBy({email}); const usernameUser = await User.findOneBy({username}); //이미 있으면 erros 객체에 넣음 if(emailUser) errors.email = "이미 해당 이메일 주소가 사용되었습니다." if(usernameUser) errors.username = "이미 사용자 이름이 사용되었습니다." //에러가 있으면 return으로 에러를 response 보내줌 if(Object.keys(errors).length > 0){ return res.status(400).json(errors) } const user = new User(); user.email = email; user.username = username; user.password = password; //엔터티에 정해 놓은 조건으로 user 데이터 유호성 검사를 해줌 errors = await validate(user); //유저 정보를 user table에 저장 await user.save() return res.json(user); } catch(error){ console.error(error); return res.status(500).json({error}) } } const router = Router(); router.post("/register", register); export default router 맨 위 코드(auth.ts)에서 사진과 같이 overload 에러가 뜹니다. 유저이름/이메일 중복 및 에러 처리하는 코드 중 return으로 응답을 반환하는 중 타입이 맞지 않아서 생기는 오류 같은데 어떻게 해결할 수 있을까요??
따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
postgres 강의 중 docker compose up을 실행하면 아래와 같이 오류가 뜹니다. version: "3" services: db: image: postgres: latest container_name: postgres restart: always ports: - "5432:5432" environment: POSTGRES_USER: "${DB_USER_ID}" POSTGRES_PASSWORD: "${DB_USER_PASSWORD}" volumes: - ./data:/var/lib/postgresql/data yml 파일은 수업 그대로 위/아래와 같이 작성했는데 4번쨰 줄 postgres 부분이 인식이 안되는것 같아서 이것 때문인지... 구글링을 해봐도 해결 방법을 모르겠습니다!
Scaffold-DbContext "Host= localhost ;Database=mydatabase;Username=myuser;Password=mypassword" Npgsql.EntityFrameworkCore.PostgreSQL -o Models 커맨드 입력 후 Models 폴더가 생성되지 않습니다. 사진은 커맨드 입력 후의 로그이며, 아래는 설치된 패키지 목록입니다. 변경해야되는 DB 이름, user,password 등은 여러번 확인을 해봤습니다 혹시 DB 이름에 _가 포함되면 안되는걸까요? 사진상으로 확인이 힘든 것 같아 아래에 로그 전문 추가하겠습니다. Build started... Build succeeded. To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see https://go.microsoft.com/fwlink/?LinkId=723263. Npgsql.PostgresException (0x80004005): 3D000: "Inflearn_Winform_Test" �����ͺ��̽� ���� at Npgsql.Internal.NpgsqlConnector.ReadMessageLong(Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage) at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource<TResult>.GetResult(Int16 token) at Npgsql.Internal.NpgsqlConnector.<Open>g__OpenCore|213_1(NpgsqlConnector conn, SslMode sslMode, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken, Boolean isFirstAttempt) at Npgsql.Internal.NpgsqlConnector.Open(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken) at Npgsql.PoolingDataSource.OpenNewConnector(NpgsqlConnection conn, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken) at Npgsql.PoolingDataSource.<Get>g__RentAsync|33_0(NpgsqlConnection conn, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken) at Npgsql.NpgsqlConnection.<Open>g__OpenAsync|42_0(Boolean async, CancellationToken cancellationToken) at Npgsql.NpgsqlConnection.Open() at Npgsql.EntityFrameworkCore.PostgreSQL.Scaffolding.Internal.NpgsqlDatabaseModelFactory.Create(DbConnection dbConnection, DatabaseModelFactoryOptions options) at Npgsql.EntityFrameworkCore.PostgreSQL.Scaffolding.Internal.NpgsqlDatabaseModelFactory.Create(String connectionString, DatabaseModelFactoryOptions options) at Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineerScaffolder.ScaffoldModel(String connectionString, DatabaseModelFactoryOptions databaseOptions, ModelReverseEngineerOptions modelOptions, ModelCodeGenerationOptions codeOptions) at Microsoft.EntityFrameworkCore.Design.Internal.DatabaseOperations.ScaffoldContext(String provider, String connectionString, String outputDir, String outputContextDir, String dbContextClassName, IEnumerable`1 schemas, IEnumerable`1 tables, String modelNamespace, String contextNamespace, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames, Boolean suppressOnConfiguring, Boolean noPluralize) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContextImpl(String provider, String connectionString, String outputDir, String outputDbContextDir, String dbContextClassName, IEnumerable`1 schemaFilters, IEnumerable`1 tableFilters, String modelNamespace, String contextNamespace, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames, Boolean suppressOnConfiguring, Boolean noPluralize) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContext.<>c__DisplayClass0_0.<.ctor>b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action) Exception data: Severity: ġ�������� SqlState: 3D000 MessageText: "Inflearn_Winform_Test" �����ͺ��̽� ���� File: postinit.c Line: 1033 Routine: InitPostgres 3D000: "Inflearn_Winform_Test" �����ͺ��̽� ����
다양한 사례로 익히는 SQL 데이터 분석(권철민 강사님) 강사님 안녕하세요 저는 백앤드 개발자로 3년간 일하다가 개발보다는 쿼리짜는 것에 더 흥미가 있어서 데이터 엔지니어쪽으로 전직하고 싶어서 이 강의를 구매했습니다. 저는 평소 데이터를 분석하고 쿼리를 짜는게 재미있고 꼼꼼한 성격이어서 데이터 관련 직무가 저와 잘 맞을거라고 생각하는데요! 아래 두가지 질문드립니다~! 이 강의가 데이터 분석가를 위한 강의라고 보았는데 이 직무는 SQL쿼리조작+프로그래밍 능력 두가지가 필요한 것일까요? 프로그래밍의 비중이 개발자보다는 덜 한 직업인가요..? ADSP (데이터 분석 준전문가)는 해당 직무 및 이 강의와 관련이 있는 자격증인가요?
안녕하세요. left join 실습을 하던중에, 궁금한점이 생겨서 질문드립니다. 아래의 코드로 실습할때에는 마드리드에 살고있는 고객정보를 잘 가져오는데 select c.contact_name , o.order_id , o.order_date , o.employee_id , o.ship_via from nw.customers c left join nw.orders o on c.customer_id = o.customer_id where c.city = 'Madrid' 아래의 코드로 변경하여 실행하였을 때에는 에러가 나서 데이터를 가져오지 못합니다. 두개의 차이가 무엇인지 궁금합니다. select c.contact_name , o.order_id , o.order_date , o.employee_id , o.ship_via from nw.customers c left join nw.orders o on c.customer_id = o.customer_id where c.city = "Madrid" 답변 감사합니다.
안녕하세요. 정말 강의 재밌게 잘 듣고 있습니다. 들으면서 궁금한 부분이 있어 질문드립니다. /orders API를 예시로 들었을 때, urls.py 파일에 모든 코드가 작성되는데, 쿼리나 비즈니스 로직을 따로 분리하는 방식은 파이썬 프레임워크에서는 잘 사용하지 않는 방법인가요? 일반적으로 스프링에서는 service와 respository 클래스로 해당 코드를 분리하는 편이어서 이 차이점이 궁금합니다.
NuGet 패키지 관리자 콘솔 실행시 아래와 같은 그룹정책으로 사용 오류 발생하면 대체 방안이 있을까요? 형식 데이터 파일을 로드하는 동안 오류가 발생했습니다. C:\program files\microsoft visual studio\2022\community\common7\ide\commonextensions\microsoft\nuget\Modules\NuGet\ NuGet.Format.ps 1xml, , C:\program files\microsoft visual studio\2022\community\common7\ide\commonextensions\microsoft\nuget\Modules\NuGet\ NuGet.Format.ps 1xml: 다음 유효성 검사 예외로 인해 파일을 건너뛰었습니다. 그룹 정책을 사용하여 만든 정책 같은 소프트웨어 제한 정책에 의해 작업이 차단되었으므로 C:\program files\microsoft visual studio\2022\community\common7\ide\commonextensions\microsoft\nuget\Modules\NuGet\ NuGet.Format.ps 1xml 파일을 로드할 수 없습니다..
안녕하세요, Where절 서브쿼리 사용 시 유의사항 part 듣다가 질문드립니다 앞전에 exists 사용법에 대해 나오지 않아서 이 파트 들으면서 처음 봤는데요! 비상관 서브 쿼리 - in 을 사용해서 설명 상관 서브쿼리 exists 를 사용해서 설명 해주셨는데 in을 사용한 비상관 서브쿼리에서도 상관서브쿼리처럼 메인쿼리의 연결 컬럼을 넣어줘도 작동이되어서요 그럼 비상관 서브쿼리랑 상관 서브쿼리랑 차이가 없는것처럼 보여서 헷갈립니다 ㅠ 그리고 언제 in 을 사용한 서브쿼리를 활용하는지, exists 를 사용하는지 궁금합니다 from ( 서브쿼리 ) 이렇게 해줘도 될것같은데 어떤 차이인지 해서요!
안녕하세요. 현재 데이터 입력 Razor Page Design Part.1 부분을 보고 있는데, 강의 내용이 누락된 것 같아 글 남깁니다. 이전 강의 까지는 Interface, Service, Controller 를 작성하였었고, 이제 UI 부분을 해보겠다 하신 후에 강의 9분 30초 즈음에 DataInput.razor 파일을 보여주시는데 강의 내용에 없던 코드가 작성되어 있습니다. 그리고 서버 프로젝트쪽 Program.cs에 dbContext와 서비스에 의존성 주입하는 내용도 빠져있어 강의대로 따라가면 실행 중 API가 호출되지 않아 문제가 발생합니다. 확인 부탁 드립니다.
안녕하세요! 강의를 들으며 솔루션을 만들 때 한가지 질문이 생겨서 여쭙니다. Blazor WebAssembly 솔루션 만들 때 강의에서는 프레임워크를 .Net 6.0을 사용했지만, 현재 시점에는 .Net 8.0 버전이 있어서 해당 버전으로 만들어 보려고 합니다. 하지만 .Net 6.0과 다르게 .Net 8.0 으로 솔루션을 만들 때 ASP.NET Core 호스팅 이라는 옵션이 없어 솔루션을 만들고 나면 프로젝트가 1개뿐인 솔루션이 만들어집니다. .Net 8.0 사용 시 어떻게 하면 강의처럼 3개의 프로젝트가 있는 솔루션을 만들 수 있을까요? 혹시, 그냥 강의처럼 구조를 잡기 위해 일단 솔루션을 만들고 프로젝트를 2개 더 추가를 해도 같은걸까요?
안녕하세요, 디비버 실습시 nw스키마에서 SQL편집기를 생성하여 코드를 작성 중입니다. 따라서 select * from orders; 와 같이 nw.orders대신 그냥 orders로 테이블을 지정(?)하고있습니다. 해당 쿼리를 그대로 복사하여 query객체에 넣고싶은데 이럴땐 conn_string에 어떤 추가적인 사항을 넣어줘야 할까요?