묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
SequelizeUniqueConstraintError) Duplicate entry '1-2' for key 'follow.PRIMARY' 문제입니다
팔로우 기능 구현 중에 follow.PRIMARY에 문제가 있다는 에러가 생겼습니다 mysql table을 보면 FollowingId, FollowerId값은 잘 들어가져 있고, redux에는 FOLLOW_SUCCESS까지 나타납니다 그런데 FOLLOW_SUCCESS뒤에 FOLLOW_FAILURE가 나오면서 아래와 같은 'follow.PRIMARY must be unique' 에러가 백앤드 서버에서 발생합니다. 더블클릭을 하지 않았는데도 두번 요청이 들어가는 건가요? 어떻게 해결해야하는지 모르겠습니다 도와주세요 제로초님~ PATCH /user/1/follow 200 176.212 ms - 12 UniqueConstraintError [SequelizeUniqueConstraintError]: Validation error at Query.formatError (C:\Users\HOME\Documents\ymillonga\back\node_modules\sequelize\lib\dialects\mysql\query.js:218:16) at Query.run (C:\Users\HOME\Documents\ymillonga\back\node_modules\sequelize\lib\dialects\mysql\query.js:54:18) at processTicksAndRejections (internal/process/task_queues.js:93:5) at async C:\Users\HOME\Documents\ymillonga\back\node_modules\sequelize\lib\sequelize.js:619:16 at async MySQLQueryInterface.bulkInsert (C:\Users\HOME\Documents\ymillonga\back\node_modules\sequelize\lib\dialects\abstract\query-interface.js:818:21) at async recursiveBulkCreate (C:\Users\HOME\Documents\ymillonga\back\node_modules\sequelize\lib\model.js:2698:25) at async Function.bulkCreate (C:\Users\HOME\Documents\ymillonga\back\node_modules\sequelize\lib\model.js:2824:12) at async Promise.all (index 0) at async BelongsToMany.add (C:\Users\HOME\Documents\ymillonga\back\node_modules\sequelize\lib\associations\belongs-to-many.js:740:30) at async C:\Users\HOME\Documents\ymillonga\back\routes\user.js:168:9 { errors: [ ValidationErrorItem { message: 'follow.PRIMARY must be unique', type: 'unique violation', path: 'follow.PRIMARY', value: '1-2', origin: 'DB', instance: null, validatorKey: 'not_unique', validatorName: null, validatorArgs: [] } ], fields: { 'follow.PRIMARY': '1-2' }, parent: Error: Duplicate entry '1-2' for key 'follow.PRIMARY' at Packet.asError (C:\Users\HOME\Documents\ymillonga\back\node_modules\mysql2\lib\packets\packet.js:712:17) at Query.execute (C:\Users\HOME\Documents\ymillonga\back\node_modules\mysql2\lib\commands\command.js:28:26) at Connection.handlePacket (C:\Users\HOME\Documents\ymillonga\back\node_modules\mysql2\lib\connection.js:425:32) at PacketParser.onPacket (C:\Users\HOME\Documents\ymillonga\back\node_modules\mysql2\lib\connection.js:75:12) at PacketParser.executeStart (C:\Users\HOME\Documents\ymillonga\back\node_modules\mysql2\lib\packet_parser.js:75:16) at Socket.<anonymous> (C:\Users\HOME\Documents\ymillonga\back\node_modules\mysql2\lib\connection.js:82:25) at Socket.emit (events.js:314:20) at addChunk (_stream_readable.js:303:12) at readableAddChunk (_stream_readable.js:279:9) at Socket.Readable.push (_stream_readable.js:218:10) { code: 'ER_DUP_ENTRY', errno: 1062, sqlState: '23000', sqlMessage: "Duplicate entry '1-2' for key 'follow.PRIMARY'", sql: "INSERT INTO `Follow` (`createdAt`,`updatedAt`,`FollowingId`,`FollowerId`) VALUES ('2020-11-29 10:47:14','2020-11-29 10:47:14',1,2);", parameters: undefined }, original: Error: Duplicate entry '1-2' for key 'follow.PRIMARY' at Packet.asError (C:\Users\HOME\Documents\ymillonga\back\node_modules\mysql2\lib\packets\packet.js:712:17) at Query.execute (C:\Users\HOME\Documents\ymillonga\back\node_modules\mysql2\lib\commands\command.js:28:26) at Connection.handlePacket (C:\Users\HOME\Documents\ymillonga\back\node_modules\mysql2\lib\connection.js:425:32) at PacketParser.onPacket (C:\Users\HOME\Documents\ymillonga\back\node_modules\mysql2\lib\connection.js:75:12) at PacketParser.executeStart (C:\Users\HOME\Documents\ymillonga\back\node_modules\mysql2\lib\packet_parser.js:75:16) at Socket.<anonymous> (C:\Users\HOME\Documents\ymillonga\back\node_modules\mysql2\lib\connection.js:82:25) at Socket.emit (events.js:314:20) at addChunk (_stream_readable.js:303:12) at readableAddChunk (_stream_readable.js:279:9) at Socket.Readable.push (_stream_readable.js:218:10) { code: 'ER_DUP_ENTRY', errno: 1062, sqlState: '23000', sqlMessage: "Duplicate entry '1-2' for key 'follow.PRIMARY'", sql: "INSERT INTO `Follow` (`createdAt`,`updatedAt`,`FollowingId`,`FollowerId`) VALUES ('2020-11-29 10:47:14','2020-11-29 10:47:14',1,2);", parameters: undefined }, sql: "INSERT INTO `Follow` (`createdAt`,`updatedAt`,`FollowingId`,`FollowerId`) VALUES ('2020-11-29 10:47:14','2020-11-29 10:47:14',1,2);" } SequelizeUniqueConstraintError: Validation error at Query.formatError (C:\Users\HOME\Documents\ymillonga\back\node_modules\sequelize\lib\dialects\mysql\query.js:218:16) at Query.run (C:\Users\HOME\Documents\ymillonga\back\node_modules\sequelize\lib\dialects\mysql\query.js:54:18) at processTicksAndRejections (internal/process/task_queues.js:93:5) at async C:\Users\HOME\Documents\ymillonga\back\node_modules\sequelize\lib\sequelize.js:619:16 at async MySQLQueryInterface.bulkInsert (C:\Users\HOME\Documents\ymillonga\back\node_modules\sequelize\lib\dialects\abstract\query-interface.js:818:21) at async recursiveBulkCreate (C:\Users\HOME\Documents\ymillonga\back\node_modules\sequelize\lib\model.js:2698:25) at async Function.bulkCreate (C:\Users\HOME\Documents\ymillonga\back\node_modules\sequelize\lib\model.js:2824:12) at async Promise.all (index 0) at async BelongsToMany.add (C:\Users\HOME\Documents\ymillonga\back\node_modules\sequelize\lib\associations\belongs-to-many.js:740:30) at async C:\Users\HOME\Documents\ymillonga\back\routes\user.js:168:9 PATCH /user/1/follow 500 387.485 ms - 1353 back/models/user.js const DataTypes = require('sequelize'); const { Model } = DataTypes; module.exports = class User extends Model { static init(sequelize) { return super.init({ email: { type: DataTypes.STRING(30), allowNull: false,//필수값으로 설정 unique: true, }, nickname: { type: DataTypes.STRING(30), allowNull: false, }, password: { type: DataTypes.STRING(100), allowNull: false, }, snsId: { type: DataTypes.STRING(30), allowNull: true, }, provider: { type: DataTypes.STRING(10), allowNull: false, defaultValue: 'local', }, }, { modelName: 'User', tableName: 'users', charset: 'utf8', collate: 'utf8_general_ci', sequelize, }); } static associate(db) { db.User.hasMany(db.Post); db.User.hasMany(db.Comment); db.User.belongsToMany(db.Post, { through: 'Like', as: 'Likers' }); //중간 테이블 이름: Like, 별칭:'Likers; db.User.belongsToMany(db.User, { through: 'Follow', as: 'Followers', foreignKey: 'FollowingId' });//foreignKey:col의 값을 정해준다//나=FollowingId, 내가 따라다니는 사람목록=Followers db.User.belongsToMany(db.User, { through: 'Follow', as: 'Followings', foreignKey: 'FollowerId' });//나=FollowerId } }; /back/routes/user.js router.patch('/:userId/follow', isLoggedIn, async (req, res, next) => { try { const user = await User.findOne({ where: { id: req.params.userId } }); if (!user) { res.status(403).send('존재하지 않는 사용자는 팔로잉할 수 없습니다.'); } await user.addFollowers(req.user.id);//게시글 작성자를 따라다니는 followers목록에 나를 추가 res.status(200).json({ UserId: parseInt(req.params.userId, 10) }); } catch (err) { console.error(err); next(err); } });
-
미해결웹 게임을 만들며 배우는 자바스크립트
함수 비동기콜백에서 이벤트의 값은 뭐가 되는 건가요?
지금까지는 a라는 함수를 만들고 a('b')를 하면 a라는 함수에 다음에있는 ()안의 값으로 'b'가 들어간다고 알고 있었는데요. 이번에 나온 addEventListener나 indexOf는 어떤 식으로 작동해서, 이벤트의 값이 뭐가 되는 건가요?
-
미해결윤재성의 Vue.js 프로젝트를 통한 실무 개발 과정
component를 동적으로 렌더링하는 사례는 어떤 게 있나요?
선생님 data를 이용해서 component를 동적으로 렌더링한다는 것을 알게 되었는데요. 실무에 어느 부분을 만드는 데 주로 사용되는지 알 수 있을까요? 감사합니다.
-
미해결Svelte 실전 강의 - 스도쿠 만들기
백엔드와 프론트엔드 로그인 구현 부분까지의 중간단계 에러
강의 잘 듣고 있습니다.Backend와 Frontend 로그인 구현 부분에서, Frontend Join 컴포넌트 까지 영상을 보고 실습하고 있습니다.그런데, 백엔드와 프론트엔드 서버를 각각 띄우고 나서 크롬 개발모드에서 xhr.js:184 GET http://localhost:3000/user 404 (Not Found) 라고 뜨는데, 그렇게 뜨고 있는게 맞는지 모르겠습니다. 제가 영상 보면서 작성한 코드도 그렇고, Backend와 Frontend 깃허브 실습코드 다운받아 설치하고 띄워봐도 똑같이 에러가 뜨는데요. 중간에 /user 라우터 부분은 삭제 하지 않았나요?
-
미해결우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)
setDefault 속도에 관해 질문드립니다!
튜플에서 딕셔너리로 만들 때 setDefault속도가 더 빠르고 레퍼런스에서도 추천한다고 한 부분에서 궁금증이 생겼습니다! 정확히 튜플에서 딕셔너리로 만들 때 setDefault에 속도가 빠른지 정확히 이해가 되지 않습니다ㅠㅠ 레퍼런스에서도 setDefault쓰는 걸 추천한다고 해 검색해봤는데 어떤 레퍼런스인지 찾지 못했습니다. 왜 setDefault가 빠른지 알고 싶고, 그 레퍼런스 출처를 알 수 있을까요? 그리고 강의 너무 잘 보고 있습니다!
-
미해결Vue.js 시작하기 - Age of Vue.js
axios도 promise처럼 .then().then()이렇게 쓸 수 있나요?
axios가 promise 기반이라면, promise chaining이 가능한것처럼 axio는 then의 return 값이 다시 axios인가요? 그리고 제공해주신 링크를 읽어보면서 async와 chaining의 차이를 잘 모르겠습니다. 둘다 비동기 작업이 끝나길 기다리다가 다음 비동기 작업으로 넘어가는거 맞죠?
-
해결됨웹 게임을 만들며 배우는 자바스크립트
짝맞추기게임
유튜브로 공부하다 넘어왔습니다! 짝맞추기 게임 중 카드를 색상 말고 이미지를 넣고 싶은데 변수를 어디다 어떻게 넣어야 할지 감이 안와서 질문드려요!
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
y값이 너무 무분별하게 나옵니다.
안녕하세요 교수님 복습하는 도중에 막히는 부분이 있어 질문 드립니다. 따로 제가 구한 엑셀의 표가 다음과 같은데 이 표를 이렇게 만들고 앞써 질문에 답해주셨던 그래프로 만들었더니 y값이 무분별하게 나옵니다. 이럴때는 어떻게 해야하나요?
-
미해결요즘 누가 유료로 웹서비스 구축 하나, Firebase의 모든것
어디서 도메인을 구매하나요?
마지막에 잘 안들려서 모르겠습니다
-
미해결스프링 부트 개념과 활용
안녕하세요 강사님!
안녕하세요. 우선 부족한 부분을 채우고 복습하기 위해 강의를 듣고있는데 매 강의마다 정말 많은 것을 얻어갑니다. 감사합니다. 한가지 여쭤보고 싶은 점이 있어서 글을 남기게 되었습니다. https http2설정을 지우고 jar로 실행을 했을 땐 잘 동작하는 것을 확인할 수 있었는데 설정을 했을 땐 에러가 났습니다. keystore때문이지 않을까? 라는 생각을 해봤지만 정확한 이유를 알고싶어 여쭤보게 되었습니다. 혹시 수업에서 다뤄주셨는데 제가 놓쳤다면 죄송합니다;; ㅎㅎ
-
해결됨공공데이터로 파이썬 데이터 분석 시작하기
엑셀에서 특정행을 가져와서 그래프를 그려보는것을 했었는데 여러개의 행을 가져와서 그리는건 어떻게 하나요?
방금전 질문했던 학생입니다. 지역에서 경기값을 지워서 그리는 것은 성공하였습니다. 그러면 경기값과 서울값, 제주값을 가져와서 그래프를 그릴려고 하면 어떻게 해야하나요? ex) 지역명에서 경기, 서울, 제주 3가지 값을 가져와 그래프를 그린다.
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
제이쿼리 네비게이션
제이쿼리로 네비게이션 만든거랑 이번 강의 css hover를 이용해서 만든 네비게이션이랑 어떤 차이가 있는건가요? 전 강의에는 제이쿼리 mouseenter, mouseleave로 만들었는데 이번 강의에 굳이 css hover로 만든 이유가 있을까요?ㅠㅠㅠ
-
미해결실전 리액트 프로그래밍
1분경 나오는 사례
1분 경에 나오는 사례의 의도가 잘 이해가 가지 않습니다. 의존성 배열을 삽입하는 경우든 아니든, 화면을 클릭하면 state가 바뀝니다. 그러면 컴포넌트가 렌더링되면서 state가 업데이트 되고, useEffect가 실행되겠지요. 의존성 배열을 지우고 set 함수안에 함수적으로 state를 업데이트 해주셨는데, 별 다른 차이가 있을까요? 혼란스럽네요... 의존성 배열을 빈배열로 넣고 클로저 현상이 생길때, 함수적으로 update하면 클로저 현상을 없앨 수 있다.. 이런 의도인건지 아니면 다른 의도가 있는건지 잘 모르겠습니다.
-
미해결파이썬 무료 강의 (활용편1) - 추억의 오락실 게임 만들기 (3시간)
배경
선생님~~ 제가 지금 3.9버전을 쓰는데 background = pygame.image.load("C:/Users/leeha/Desktop/ python/pygame_basic/background.png") 라고 적었는데 안되요ㅠㅠ 어떻게 해야 하나요
-
해결됨공공데이터로 파이썬 데이터 분석 시작하기
특정행값을 삭제하는 코드도 있을까요?
복습하기 위해 새로운 엑셀을 가지고 실습하고 있었는데 특정 행값이 너무나도 커서 그래프가 그려지질 않습니다. 특정행값을 삭제하는 코드를 찾아보았지만 적용이 계속 되질 않아서 질문드립니다. ex) 지역명이 경기인 행전체를 삭제하는 코드
-
미해결홍정모의 따라하며 배우는 C언어
비주얼 스튜디오 alignment 질문있습니다.
질문 1) double dx; char ca; int it; double ddr; printf(" %lld\n", (long long)&dx % 8); printf(" %lld\n", (long long)&ca % 8); printf(" %lld\n", (long long)&it % 8); printf(" %lld\n", (long long)&ddr % 8); 이 코드를 비주얼 스튜디오에서 돌리면 dx와 ddr의 주소를 %8한 값이 0으로 안나올 때가 많습니다. online gcc compiler와 다르게 왜 안나오는지 궁금합니다. 근데 제 생각에는 안나오는게 정상인 것 같습니다. alignof를 쓰지 않고 online gcc compiler처럼 딱 맞게 나오려면 double형은 항상 메모리 주소가 8의 배수고 int형은 4의 배수 이런식으로 메모리상에 주소를 배치 받아야 되지 않습니까? online gcc compiler는 내부적으로 이렇게 굴러가는 건지도 궁금합니다. ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 질문2) char alignas(8) cz;를 하고 printf(" %lu\n", _Alignof(cz));를 하면 8이 출력됩니다. 이렇게 cz의 메모리상 배치를 강제로 8의 배수로 하면 왠지 메모리 패딩같은게 일어날 것 같은데 실제 메모리 내부적으로 어떻게 처리 되는지 궁금합니다. ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 질문 3) 마지막에 배열을 만들때도 alignas를 사용한다고 하셨는데 unsigned char alignas(long double) c_arr[10]; 에서 unsigned char 방이 10개가 있는데 그 10개의 방 모두 long double로 alignment를 지정해준 건가요?
-
미해결컴퓨터, 웹, 코딩, 프로그래밍의 시작 - Web1
웹 시작페이지가 README.md로 나오는데 뭐가 문제일까요...
웹 시작페이지가 README.md로 나오는데 그걸 1.html로 어떻게 바꾸나요?
-
미해결남박사의 파이썬 기초부터 실전 100% 활용
2020.11.29일
여러분 naver blog가 2020년 경으로 바뀌었습니다
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Yolo3 train.py 에서 create model 함수
강사님, 아래 코드에서 185는 어디서 온 숫자 인가요? model_body.layers 는 106 인가요? num 은 layer 층수 맞는지요? 그리고, num 이 layer 층수이면, 왜 [freeze_body-1] = [1] 같은데, num 계산을 왜 아래 식과 같이 코드로 표현하는 것인지 궁금합니다. num = (185, len(model_body.layers)-3)[freeze_body-1]
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
python-question4-web 의 57번 질문입니다.
안녕하세요. 차근차근 설명 잘 해주셔서 강의 잘 듣고있습니다^^ 질문드립니다. 문제를 풀며 가장 자연스럽게 익숙해지는 파이썬 기본: 반복문과 다양한 데이터구조 활용2 의 16:00정도의 내용입니다. 아래 data.keys()에서 keys()를 제외한 'for item in data'로 코드를 돌려도 같은 결과가 나오는데 keys()를 꼭 쓰는 이유가 무엇인지 궁금합니다. for item in data.keys() data 블라블라.... 감사합니다. 즐거운 하루 되세요!