수강이 제한됩니다.
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
sequelize 사용 시 인코딩 에러인것 같습니다.
첨부된 에러 캡쳐를 보시면, 한글이 인코딩 되지 않고 mysql에 전달되어서 발생한 것 같습니다.. 인터넷에 검색해서 mysql 전체적인 인코딩 세팅을 변경하는 방법을 찾아서 해보고 있는데 잘 안되네요ㅠ 어떻게 하면 될까요?ㅠ
- 해결됨Node.js 교과서 - 기본부터 프로젝트 실습까지
같은 방식으로 코딩을 했는데요 이런 에러가 뜨네요.
D:\Study\Server\nodejs\nodejsLib\login\node_modules\sequelize\lib\model.js:230 throw new Error(`A column called 'id' was added to the attributes of '${this.tableName}' but not marked with 'primaryKey: true'`); ^ Error: A column called 'id' was added to the attributes of 'users' but not marked with 'primaryKey: true' at Function._addDefaultAttributes (D:\Study\Server\nodejs\nodejsLib\login\node_modules\sequelize\lib\model.js:230:15) at Function.init (D:\Study\Server\nodejs\nodejsLib\login\node_modules\sequelize\lib\model.js:1052:10) at Sequelize.define (D:\Study\Server\nodejs\nodejsLib\login\node_modules\sequelize\lib\sequelize.js:428:11) at module.exports (D:\Study\Server\nodejs\nodejsLib\login\models\user.js:2:22) at Object.<anonymous> (D:\Study\Server\nodejs\nodejsLib\login\models\index.js:15:28) at Module._compile (internal/modules/cjs/loader.js:971:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1011:10) at Module.load (internal/modules/cjs/loader.js:822:32) at Function.Module._load (internal/modules/cjs/loader.js:730:14) at Module.require (internal/modules/cjs/loader.js:864:19) at require (internal/modules/cjs/helpers.js:74:18) at Object.<anonymous> (D:\Study\Server\nodejs\nodejsLib\login\app.js:11:21) at Module._compile (internal/modules/cjs/loader.js:971:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1011:10) at Module.load (internal/modules/cjs/loader.js:822:32) at Function.Module._load (internal/modules/cjs/loader.js:730:14) at Module.require (internal/modules/cjs/loader.js:864:19) at require (internal/modules/cjs/helpers.js:74:18) at Object.<anonymous> (D:\Study\Server\nodejs\nodejsLib\login\bin\www:7:11) at Module._compile (internal/modules/cjs/loader.js:971:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1011:10) at Module.load (internal/modules/cjs/loader.js:822:32) npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! login@0.0.0 start: `node ./bin/www` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the login@0.0.0 start script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\dnatu\AppData\Roaming\npm-cache\_logs\2019-11-05T13_48_03_653Z-debug.log 테이블 코드는 선생님 코드와 같지는 않고 필드명과 테이블 명만 제가 원하는 대로 살짝 수정하긴 했습니다만 이것이 영향을 미치는 것 같지는 않습니다! index.js는 기본으로 생성되는 페이지 그대로 사용했습니다. user.js module.exports = (sequelize, DataTypes) => { return sequelize.define('user', { name:{ type: DataTypes.STRING(5), allowNULL: false, unique: false, }, id: { type: DataTypes.STRING(30), allowNULL: false, unique: true, }, passwd: { type: DataTypes.STRING(20), allowNULL: false, unique: false, }, age: { type: DataTypes.INTEGER(2).UNSIGNED, allowNULL: false, unique: false, }, phone_num: { type: DataTypes.INTEGER(12).UNSIGNED, allowNULL: false, unique: true, }, created_at: { type: DataTypes.DATE, allowNULL: false, defautlValue: sequelize.literal('now()'), }, store_name:{ type: DataTypes.STRING(20), allowNULL: false, unique: true, } }, { timestamp: false, underscored: true, }); }; // user 테이블 정리 // 이름(5), 아이디(30), 비밀번호(20), 나이(2), 휴대폰 번호(12), 계정생성일(DATE->default(now)), 마켓 이름(20) iteam.js module.exports = (sequelize, DataTypes) => { return sequelize.define('iteam', { iteam_name: { type: DataTypes.STRING(30), allowNULL: false, unique: false, }, item_price: { type: DataTypes.INTEGER(6).UNSIGNED, allowNULL: false, unique: false, }, item_count: { type: DataTypes.INTEGER(6).UNSIGNED, allowNULL: false, unique: false, }, item_description: { type: DataTypes.TEXT, allowNULL: true, unique: false, }, created_at:{ type: DataTypes.DATE, allowNULL: false, defautlValue: sequelize.literal('now()'), }, },{ timestamp: false, underscored: true, }); }; // store 테이블 정리 // 마켓 이름, 물건명, 가격, 물품 개 수, 물품 설명, 등록일자 index.js 'use strict'; const fs = require('fs'); const path = require('path'); const Sequelize = require('sequelize'); const basename = path.basename(__filename); const env = process.env.NODE_ENV || 'development'; const config = require(__dirname + '/../config/config.json')[env]; const db = {}; let sequelize; if (config.use_env_variable) { sequelize = new Sequelize(process.env[config.use_env_variable], config); } else { sequelize = new Sequelize(config.database, config.username, config.password, config); } fs .readdirSync(__dirname) .filter(file => { return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js'); }) .forEach(file => { const model = sequelize['import'](path.join(__dirname, file)); db[model.name] = model; }); Object.keys(db).forEach(modelName => { if (db[modelName].associate) { db[modelName].associate(db); } }); db.sequelize = sequelize; db.Sequelize = Sequelize; //테이블 추가 db.User = require('./user')(sequelize, Sequelize); db.Iteam = require('./iteam')(sequelize, Sequelize); //관계 설정 db.User.hasMany(db.Iteam, { foreignKey: 'store_name', sourceKey: 'id' }); db.Iteam.belongsTo(db.User, { foreignKey: 'store_name', targetKey: 'id'}); module.exports = db;
- 해결됨Node.js 교과서 - 기본부터 프로젝트 실습까지
자동완성? 기능에 대해 질문있습니다.
제로초님은 user.js나 comment.js에서 DataTypes의 자동완성? 기능이 잘 실행되는데 저는 잘 안됩니다 ㅠㅜ. 예를 들어 'DataTypes.' 하시면 뒤에 Sequelize의 타입들이 주르륵 뜨는데 저는 뜨지 않네요. 제 에디터는 vscode인데 에디터의 차이인가요?
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
2.2 프런트엔드 자바스크립트 강의는 없나요?
책의 2.2.1 ~ 2.2.4 강의는 어디에 있는지요?
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
Error: secret option required for sessions
지금 jwt 와 session을 동시에 사용하려고 하고 있는데 둘 다 사용하려고 하면 Error: secret option required for sessions 이 에러가 나옵니다. 그렇다고 session을 사용안하면 Login api 호출할 때 Error: passport.initialize() middleware not in use 에러가 납니다. passport.initialize() 만 하게 되면 Error: Failed to serialize user into session 에러가 나옵니다.. 혹시 jwt와 session을 동시에 사용할 수는 없나요 ? jwt는 userid와 password를 담는 용도가 아니라 다른 용도로 사용하려고 하는 토큰입니다. Error: secret option required for sessions를 해결하는 방법을 알려주시면 감사하겠습니다!
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
아래 getCandy()...에 대해서
먼저 아래 글의 질문에 답해 주셔서 감사합니다. ^^; 그러면....왜 교재에서는 this.status.count-- 이렇게 this를 사용해서getCandy() 형태로 접근할 수 없는 걸 예시해 주셨는지.... this를 사용하는게 바람직한 이유라도 있는지 궁금 합니다.
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
비구조화 할당에서 getCandy() 정의할때....
getCandy()를 정의 할때 this를 사용하지 않고 getCandy(){ status.count--; return status.count;} 위와 같이 정의 하면, const {getCandy, status}=candyMachine; getCandy() 로 접근이 가능 하지 않을까요?
- 해결됨Node.js 교과서 - 기본부터 프로젝트 실습까지
node-cli강좌 마지막부분
if (!triggered) { inquirer.prompt([{ type: 'list', name: 'type', message: '보고자 하는 종류를 선택하세요. ', choices: ['수입', '지출', '잔액'], }, { type: 'input', name: 'money', message: '금액을 입력하세요. ', default: '0', when: answers => ['수입', '지출'].includes(answers.type), }, { type: 'input', name: 'desc', message: '설명을 입력하세요. ', default: '.', when: answers => ['수입', '지출'].includes(answers.type), }, { type: 'confirm', name: 'confirm', message: '생성하시겠습니까? ', }]) 질문1) when을 활용하면, 위처럼 처리해주면 될까요?! module.exports = (sequelize, Sequelize) => { 질문2) models/wallet.js 에서 보통은 두번째 인자로 DataTypes을 변수명으로 쓰시던데, 해당 강의에서는 Sequelize로 사용하신 것이 특별한 이유가 있어서 인가요?!
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
npm i -g sequelize-cli
모듈 설치가 안되네요 ㅠ npm ERR! A complete log of this run can be found in: npm ERR! /Users/frankkim/.npm/_logs/2019-10-30T08_07_37_871Z-debug.log 맥 환결설정 문제인가요?
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
[window os] cli에 대해서
안녕하세요 강의 보고 그대로 따라 했는데 index.js #!/usr/bin/env node console.log('hello CLI!!') package.json { "name": "node_cli", "version": "0.0.1", "description": "node CLI program", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "LEEKY", "license": "ISC", "bin": { "cli": "./index.js" } } 이렇게 설정하고 npm i -g를 했습니다 PS D:\_Node_Study\node_cli> npm i -g 결과는 C:\Users\LEE KY\AppData\Roaming\npm\cli -> C:\Users\LEE KY\AppData\Roaming\npm\node_modules\node_cli\index.js + node_cli@0.0.1 updated 1 package in 0.14s 이렇게 나왔습니다. 여기에서 문제가 명령어 cli를 하면 PS D:\_Node_Study\node_cli> cli > cmdlet Clear-Item(명령 파이프라인 위치 1) > 다음 매개 변수에 대한 값을 제공하십시오. > Path[0]: 이렇게 나옵니다. 해결을 하고 싶은데 도무지 어떻게 해야될지도 몰라서 글을 남깁니다.
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
json.parse와 json.stringify (put & post & get)
json.parse => javascript 객체 형태로 만들어주는 것으로 이해했고, json.stringify => 객체 형태를 문자열로 만든것으로 이해했습니다. 하지만, 언제 쓰이는지 정확하게 이해하지 못하고 헷갈려서 질문을 남깁니다. 잘못 이해하고 있는 부분 짚어주시면 진심으로 감사드리겠습니다. ******** ex) 프런트에서 <"zero kim" 입력> , post 로 request 을 요청할 때, // (1) 서버는 프런트에서 입력 받은 "zero kim"을 가지고 와서 DB에 담아줘야 하는 것으로 이해했고, DB에서 값을 담아주는 과정에서, 프런트에서 직접 가지고온 "zero kim"이 문자열? 형태를 나타내고 있으므로 서버에서 사용할 수 있도록 만들어주기 위해 json.parse했고, // (2) 이를 다시 프런트에 뿌려주기 위하여 "zero kim"을 DB에 담고난 후 json.stringfy 문자열로 다시 만들어서 프런트에 뿌려주는건가요? // (1) (post & put) request는 해당 값을 DB에 넣고 다시 프런트에서 보여달라고 request를 하는건가요? // (2) 브라우저에선 문자열로 stringify를 해줘야만 작동하나요? 서버에선 객체로 parsing을 따로 해줘야만 하는건요? 사용자가 보고 있는 브라우저가 문자이기 때문에 문자열로 파싱해주는건가요? 며칠동안 생각을 해봤는데 헷갈리네요 ㅠㅠ
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
swagger.json
스웨거와 json 연동을 하는건 나중에 배운다고 하셨는데 책에 나오나요? 아니면 강의 후반 부에 다루나요? 지금 스웨거를 써야 하는데 감이 잡히질 않아서요 ㅠㅠ 팁좀 주시면 감사하겠습니다. 해당 강의 영상이라도 알려주시면 잠깐 빠르게 보고 싶어서요.
- 해결됨Node.js 교과서 - 기본부터 프로젝트 실습까지
getCandy.call(candyMachine)
getCandy.call(candyMachine) 으로 this를 연결해주시는데요, bind 써서는 어떻게 하나요?
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
질문이요
팔로우 팔로잉 관계에서 많이 헷갈리는데요. 팔로워 Followers : 남이 저를 팔로우 한 경우 저 <- 남 팔로잉 Following : 제가 남을 팔로우 한경우 저 -> 남 __________________________________________ 강의 에서, 팔로우 = 일반인 , 팔로잉 = 유명인 이라고 하셨는데요. 이유가, 팔로워는 일반인들이 유명인의 팔로우가 되어서 그런가요?? 팔로잉은 유명인이 많은 팔로잉을 많이 갖고 있어서 그런가요? _____________________________________________ 제가 1번이라는 ID 로 글을 A,B,C 를 썼어요. 그리고 2,3,4 번 ID 로, 1 번의 게시글에서 팔로잉 버튼을 눌렀습니다. DB 에는, followingId followerId 1 2 1 3 1 4 이렇게 나오던데요 . 왜 이런식으로 나오는 거죠.. 잘 이해가 안가네요.. 2 는 1을 팔로잉 한다. 3은 1을 팔로잉 한다. 4는 1을 팔로잉 한다. 생각하면 할 수록 많이 헷갈리네요... 애초에 테이블이 Follower 와 Following 테이블 두개가 있으니까, Follower 테이블은 Following 의 Id 를 가르키고, Following 테이블은 Follower 의 Id 를 가르키니까, 1의 입장에서보면은 2,3,4 는 팔로워가 됩니다. 1 <- 2,3,4 즉 2,3,4 번은 Follower 테이블에 속한다. 2,3,4, 입장에서 보면은 1을 팔로잉입니다. 2,3,4 -> 1 즉 1번은 Following 테이블에 속한다. 두테이블은 서로의 ID를 가르키니까, Follower 테이블의 2,3,4 은 , Following테이블의 1 번을 가르키고, Following 테이블의 1은 , Follower테이블의 2,3,4 번을 가르키고, 지금 이게 맞는건가요??
- 해결됨Node.js 교과서 - 기본부터 프로젝트 실습까지
MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoError: Authentication failed.]
몽고디비 서버를 킬 때마다 이 에러가 발생합니다. 뭐가 잘못된건가요..?
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
[Window vscode] operation not permitted, unlink ' 에러가 뜨는데 왜 뜨는걸까요?
윈도우 vscode 터미널 환경에서 오류가 납니다. 권한 문제인듯하여 관리자권한으로 cmd실행후 실행해도 똑같은 오류 발생합니다.... ㅠㅠ
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
몽고db 연결에러 질문입니다.
connect ECONNREFUSED 127.0.0.1:27017 mongoDB compass를 사용하는데 connect를 눌러도 연결이 안됩니다. 시퀄라이즈 사용할 때 mysql이 실행이 안됐을때 mysql이 실행이 안되어 저 오류가 났었던 게 기억나서 내 PC 관리에서 MongoDB를 실행하려 들어갔는데, Mysql은 있는데 MongoDB 자체가 존재하지 않습니다. 설치를 다시해봐도 문제가 해결되지 않아 질문 남깁니다.
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
저두 sequelize db:create 에러나요.
Sequelize CLI [Node: 10.16.3, CLI: 5.5.1, ORM: 5.19.0] Loaded configuration file "config/config.json". Using environment "development". (node:1550) [SEQUELIZE0004] DeprecationWarning: A boolean value was passed to options.operatorsAliases. This is a no-op with v5 and should be removed. ERROR: connect ECONNREFUSED 127.0.0.1:3306 operatorsAliasess는 경고인데 v5 에서는 삭제해야 한다네요? 무슨 말인지 모르겠어요. 그리고 connect ECONNREFUSED 127.0.0.1:3306 에러가 나는데 이건 왜 나는 걸까요?
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
오류가 납니다.ㅜㅜ
TypeError: C:\Program Files\pjt\visualcode_workspace\nodebird\views\main.pug:23 21| for twit in twits 22| .twit > 23| input.twit-user-id(type='hidden' value=twit.user.id) 24| input.twit-id(type='hidden' value=twit.id) 25| .twit-author= twit.user.nick 26| -const follow = user && user.Followings.map(f => f.id).includes(twit.user.id); Cannot read property 'id' of undefined at eval (eval at wrap (C:\Program Files\pjt\visualcode_workspace\nodebird\node_modules\pug-runtime\wrap.js:6:10), <anonymous>:166:113) at eval (eval at wrap (C:\Program Files\pjt\visualcode_workspace\nodebird\node_modules\pug-runtime\wrap.js:6:10), <anonymous>:293:4) at template (eval at wrap (C:\Program Files\pjt\visualcode_workspace\nodebird\node_modules\pug-runtime\wrap.js:6:10), <anonymous>:799:121) at Object.exports.renderFile (C:\Program Files\pjt\visualcode_workspace\nodebird\node_modules\pug\lib\index.js:427:38) at Object.exports.renderFile (C:\Program Files\pjt\visualcode_workspace\nodebird\node_modules\pug\lib\index.js:417:21) at View.exports.__express [as engine] (C:\Program Files\pjt\visualcode_workspace\nodebird\node_modules\pug\lib\index.js:464:11) at View.render (C:\Program Files\pjt\visualcode_workspace\nodebird\node_modules\express\lib\view.js:135:8) at tryRender (C:\Program Files\pjt\visualcode_workspace\nodebird\node_modules\express\lib\application.js:640:10) at Function.render (C:\Program Files\pjt\visualcode_workspace\nodebird\node_modules\express\lib\application.js:592:3) at ServerResponse.render (C:\Program Files\pjt\visualcode_workspace\nodebird\node_modules\express\lib\response.js:1012:7) at Post.findAll.then (C:\Program Files\pjt\visualcode_workspace\nodebird\routes\page.js:33:13) at tryCatcher (C:\Program Files\pjt\visualcode_workspace\nodebird\node_modules\bluebird\js\release\util.js:16:23) at Promise._settlePromiseFromHandler (C:\Program Files\pjt\visualcode_workspace\nodebird\node_modules\bluebird\js\release\promise.js:517:31) at Promise._settlePromise (C:\Program Files\pjt\visualcode_workspace\nodebird\node_modules\bluebird\js\release\promise.js:574:18) at Promise._settlePromise0 (C:\Program Files\pjt\visualcode_workspace\nodebird\node_modules\bluebird\js\release\promise.js:619:10) at Promise._settlePromises (C:\Program Files\pjt\visualcode_workspace\nodebird\node_modules\bluebird\js\release\promise.js:699:18) at _drainQueueStep (C:\Program Files\pjt\visualcode_workspace\nodebird\node_modules\bluebird\js\release\async.js:138:12) at _drainQueue (C:\Program Files\pjt\visualcode_workspace\nodebird\node_modules\bluebird\js\release\async.js:131:9) at Async._drainQueues (C:\Program Files\pjt\visualcode_workspace\nodebird\node_modules\bluebird\js\release\async.js:147:5) at Immediate.Async.drainQueues (C:\Program Files\pjt\visualcode_workspace\nodebird\node_modules\bluebird\js\release\async.js:17:14) at runCallback (timers.js:705:18) at tryOnImmediate (timers.js:676:5)왜 이런 오류가 나오는지 잘 모르겠습니다.어떻게 수정하고 대체 뭘 잘못한거죠 ㅠ
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
rooms[req.params.id].length 질문드립니다!
index.js에있는 /room/:id 라우터에서요! adapter가 궁금해서 console.log로 출력 해보았는데. 웹브라우저 4개가 동시에 방에 접속해 있을때 rooms[req.params.id].length 길이가 3이 나오더라구요. 왜 1이 줄어드는 건가요?