node.js

✅ Schema 생성 Subscriber 스키마를 생성해 준다. 구독을 하기 위해선 구독을 받는 사람(userTo)과 구독을 하는 사람(userFrom)이 있기 때문에 만들어주었고, 구독을 언제 했는지 자동으로 생성 시간과 업데이트 시간을 생성해 준다. const mongoose = require("mongoose"); const Schema = mongoose.Schema; const subscriberSchema = mongoose.Schema( { userTo: { type: Schema.Types.ObjectId, ref: "User", }, userFrom: { type: Schema.Types.ObjectId, ref: "User", }, }, { timestamps: true } ); con..
✅ multer 사용계기 React, Node.js로 진행 중인 프로젝트에서, 파일 업로드 기능을 구현하게 되었다. 사용자가 업로드하고자 하는 파일을 선택하여 드롭다운하면 해당 파일이 서버에 저장되도록 구현할 것이다. ✅ 사용이유 일반적으로 클라이언트에서 서버로 폼 데이터(form data)가 전송될 때 해당 데이터는 인코딩되어 전송된다. 이러한 방식은 JSON 형식의 데이터를 전송하는 것에는 어려움이 없으나, 파일 자체를 전송하려 할 때는 생각한 것처럼 전송되지 않는다. 파일을 무작정 body에 넣어서 POST 요청을 보냈으나 서버에서는 body 안에 있어야 할 파일을 가져오지 못했다.. 이러한 상황에서 파일을 온전하게 전송하기 위해서는 파일을 입력하는 form 태그의 encType 속성을 multip..
프로젝트 구조를 살펴보자면 아래와 같다. ✅ 초기 설정 express를 가져오고 express를 활용해 app을 만들어 준 뒤, 포트 번호를 5000번으로 설정해 준다. const express = require("express"); // express를 가져온다. const app = express(); // express를 이용해서 app을 만들어준다. const port = 5000; // port 번호를 5000번으로 설정 다음으로, bodyParser와 토큰을 저장할 cookieParse도 다운로드하고 불러온다. 앱에서 사용한다고 설정도 같이 해준다. const bodyParser = require("body-parser"); const cookieParser = require("cookie-p..
✅ 문제 상황 Access to XMLHttpRequest at 'http://localhost:5000/api/hello' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. ✅ 오류 원인 서버는 포트가 5000이고 클라이언트는 포트가 3000이기 때문에 발생하는 오류이다. 이렇게 두 개의 다른 포트를 가지고 있는 서버는 아무 설정 없이 Request를 보낼 수 없다. CORS(Cross-Origin Resource Sharing) 정책 때문에 보안을 위해서 막아버린다. ✅ 해결 방법 여러가지 ..
schema.methods와 schema.statics의 차이가 궁금해졌다. methods는 객체의 인스턴스를 만들어야만 사용이 가능하지만 statics은 객체의 인스턴스를 만들지 않아도 사용이 가능하다. const temp = new User() 이런 식으로 선언하고 난 뒤 temp.(메서드) 이런 식으로 호출해야만 쓸 수 있는 것이 메서드고 User.(스태틱) 이런 식으로 호출할 수 있는 것이 스태틱이다. 스태틱은 temp.(스태틱)을 형태로도 호출이 가능합니다. 그러면 무조건 static으로 선언해야 하는 것 아니냐는 질문을 할 수 있겠는데, 둘을 구분 짓는 건 오용을 막기 위한 것일 수 있다. 인스턴스가 존재해야만 기능이 원활하게 지원되는 함수인데 static으로 만들어서 프로그래머의 실수로 호출..
몽고DB를 연동하던 중 비밀번호가 담겨있는 키를 코드에 옮겨적어야 했다. 깃허브에 올려야하는데 내 비밀번호가 보이면 안되기 때문에 코드를 바꿔보고자 한다! // index.js const mongoose = require('mongoose') mongoose.connect('비밀번호키가 포함된 URI') .then(() => console.log('MongoDB Connected...')) .catch((e) => console.log('MongoDB error:', e)) 위의 코드를 바꾸자면 .. // key.js // 개발환경이 로컬인 경우와 배포모드일 경우 다르게 설정 if(process.env.NODE_ENV === 'production') { module.exports = require('./..
Node.js 패키지를 설치하는 법을 배웠으니 실행하는 법을 정리하고자 한다. 아까 parcel-bundler 패키지를 설치하였지만, 프로젝트 내부에서만 설정된 것이기 때문에 터미널에선 직접적으로 parcel 명령어가 뭔지 알 수 없었다. 📌 해결 방법 package.json 파일을 열어 "scripts" "dev"에 터미널 명령어를 적어준다. 이후 아래의 명령어를 터미널에 치면 오류가 나지 않고 로컬 환경에서 개발용으로 서버가 열리게 된다. npm run dev Server running at 뒤에 로컬 호스트 주소가 명시되고 1234라는 포트 번호가 나오는데 포트 번호는 컴퓨터 내에서 특정한 페이지로 접근할 수 있는 주소이다. 주소를 클릭해보면 서버 실행됨! "scripts" "build"에 buil..
📌 NPM(Node Package Manager) 전 세계의 개발자들이 만든 다양한 기능(패키지, 모듈)들을 관리하는 것이다. 1. 프로젝트 시작 npm init -y package.json 파일이 생성된다. 2. 패키지 parcel-bundler 설치 npm install parcel-bundler -D node_modules 폴더와 package-lock.json 파일이 생성된다. 폴더 안을 확인해보면 parcel-bundler 패키지 확인이 가능! package.json 파일을 확인해보면 "devDependencies" 옵션이 새로 생겨난 것을 볼 수 있다. 패키지의 내역과 버전을 확인할 수 있다. 이의 장점은 설치된 패키지를 지우더라도 npm i 명령어로 다시 설치 가능하다. package.jso..
박브레드
'node.js' 태그의 글 목록