컴퓨터언어/Database(39)
-
[Mongoose] Cannot set headers after they are sent to the client
이 에러는 node.js에서 GET 또는 POST 메서드와 관계된 것이다. 페이지를 로드할 때 우리는 콜백함수 내 response 인자로 redirect 또는 render 하게 된다. 하지만 IF 조건문 같이 분기가 확실히 되어야 하는 지점에서 두갈래길을 확실히 하지 않았다면, redirect와 render가 중복되는 불상사가 생기게 된다. 예를 들어, IF문의 조건이 참이어서 해당 구문 내 redirect()가 한번 실행되었다면, 그 Route를 담당하는 GET 또는 POST 메서드는 할 일을 다한 것이며, 또다른 redirect()나 render()가 해당 Route에서 실행되지 않도록 else if / else / return 키워드 등을 통해 구분해주어야 한다. 하지만 나는 else{}문 처리를 ..
2020.05.13 -
[Mongoose] 서로 다른 스키마 간 관계 설정 (Join)
SQL에 JOIN ON 이 있다면, NoSQL에는 스키마 이식이 있다. SQL에서 테이블을 정의할 때 자료형을 정의하듯이, NoSQL에서는 서로 관계를 맺고 싶은 스키마를 다른 스키마에 삽입하면 된다. const guitarSchema = new mongoose.Schema({ name: { type: String, required: [true, "how could it be noname?"] }, company: { type: String }, price: { type: Number, min: 1000, max: 10000 }, }); const customerSchema = new mongoose.Schema({ name: String, age: Number, favoriteGuitar: guitar..
2020.05.13 -
[Mongoose] Validation 유효성검사
스키마를 정의할 때 단순히 자료형만 주는 것이 아니라, 다시 {} 객체를 열어서 값의 범위나 필수여부를 지정할 수 있다. const guitarSchema = new mongoose.Schema({ name: String, company: String, price: Number, }); ▼ const guitarSchema = new mongoose.Schema({ name: { type: String, required: true }, company: { type: String }, price: { type: Number, min: 1000, max: 10000 }, }); *required를 배열로 처리하여 아래와 같이 입력하면 에러메시지를 커스텀화 할 수 있다. const guitarSchema = ..
2020.05.13 -
[Mongoose] MongoDB를 쉽게 사용할 수 있게 하는 npm - CRUD
*사전필수 : MongoDB를 설치해야 한다. Catalina 경험상 깔끔하고 빠른 설치는 Home Brew를 이용하자. https://github.com/mongodb/homebrew-brew mongodb/homebrew-brew The Official MongoDB Software Homebrew Tap. Contribute to mongodb/homebrew-brew development by creating an account on GitHub. github.com Create *한번 Create 또는 Insert를 한 후, node app.js를 통해 서버를 구동하면서 save()가 다시 호출되지 않도록 주석처리 유의하자. // npm install mongoose를 하고 require한다. ..
2020.05.13 -
[SQL vs NoSQL]관계설정
SQL : 테이블을 같은 비중으로 합침 SELECT 합친후출력할필드명1, ... FROM 기준이되는테이블 INNER JOIN 한곳으로모을곳 ON 조건 MongoDB : Object의 한 Key의 Value에 또다른 Object가 들어간다. db.webdev.insert( { _id: 4, name: "html", category: "structure", editor: [ { name: "Notepad", company: "Apple", convenience: 0 }, { name: "Visual Studio Code", company: "Microsoft", convenience: 100 }, ] } )
2020.05.13 -
[MongoDB] CRUD (SQL과 비교하기)
use 파일명 MongoDB SQL 테이블들을 저장하는 파일 불러오기 use languages 해당 프로그램에 따라 GUI 또는 명령어 입력 db.콜렉션명.insertOne({필드명1: 필드값1, ...}) MongoDB SQL 기존에 없던 테이블 자체를 새로 추가 시 db.webdev.insertOne({_id:2, name:"javascript", category:"script"}) CREATE TABLE webdev ( id INT NOT NULL, name STRING, category STRING, PRIMARY KEY (id) ) 기존에 있는 테이블에 새 레코드 추가 시 INSERT INTO webdev VALUES (2, "javascript", "script") db.콜렉션명.find(레코..
2020.05.13