묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결React로 NodeBird SNS 만들기
saga axios.get 주소질문...............
https://www.inflearn.com/questions/33218 다시 새롭게 질문드립니다,. 프론트상의 요청주소를 "localhost:3060/post/100000(그룹id)" 로 하려고 전반적으로 수정하였고 부모자식관계가 있는 댓글부분을 참고해서 < routes / back>, < sagas / front > 거의 똑같이 만들었어요 "(게시물(Post)의 부모가되는) GpostId 를 찾아서 게시물들 불러오기" 를 하고싶어서 아래와같이 코드를 작성했는데 posts/ undefined 가 뜹니다. saga 에서 loadMainPostsApi 에서 변수 gpostId를 제대로 정의하지못하는것같습니다.. ****** 댓글올리기 사이클이랑 거의 동일하게 해주었는데 ( 초록색빗금표시를 한부분의 코드 ) 게시물불러오기가 안되는 이유가 뭘까요ㅠ?? ****** < posts.js/ routes / back > // 게시물'들' 불러오기 router.get('/:id', async (req, res, next) => { // GET /api/posts/100/개발자 try { const gpost = await db.Gpost.findOne({ where: { id: req.params.id } }); if (!gpost) { return res.status(404).send('포스트가 존재하지 않습니다.!!!!'); /////////////////////////// }////////////////////////////////////////////////////////////////////////////////////////// const posts = await db.Post.findAll({ where: { GpostId: req.params.id, }, include: [{ model: db.User, attributes: ['id', 'nickname'], },{ model: db.Image, },{ model: db.User, through: 'Like', as:'Likers', attributes:['id'], }], order: [['createdAt', 'DESC']], // DESC는 내림차순, ASC는 오름차순 }); res.json(posts); } catch (e) { console.error(e); next(e); } }); < post.js/ routes / back > // 게시물 올리기 route : http://localhost:3060/post/개발자 router.post('/:id', isLoggedIn, upload.none(), async (req, res, next) => { try { // 부모가되는 그룹포스트가있는지 ///////////////////////////////////////////// const gpost = await db.Gpost.findOne({ where: { id: req.params.id } }); if (!gpost) { return res.status(404).send('포스트가 존재하지 않습니다.????'); } /////////////////////////////////////////////////////////////////////////// const newPost = await db.Post.create({ content: req.body.content, UserId: req.user.id, GpostId: gpost.id, // 어떤 그룹에 속해있는지 }); await gpost.addPost(newPost.id); /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// if (req.body.image) { // 이미지 주소를 여러개 올리면 image: [주소1, 주소2] if (Array.isArray(req.body.image)) { const images = await Promise.all(req.body.image.map((image) => { return db.Image.create({ src: image }); })); await newPost.addImages(images); } else { // 이미지를 하나만 올리면 image: 주소1 const image = await db.Image.create({ src: req.body.image }); await newPost.addImage(image); } } const fullPost = await db.Post.findOne({ where: { id: newPost.id }, include: [{ model: db.User, attributes: ['id', 'nickname'], },{ model: db.Image, },{ model:db.User, as:"Likers", attributes:['id'], }], }); res.json(fullPost); } catch (e) { console.error(e); next(e); } }); <<<<<<<<<<<<<<<<<< post.js/ sagas / front >>>>>>>>>>>>>>>>>>>> // 게시물 올리기 function addPostAPI(postData){ // http://localhost:3060/post/10000 ///////////////////// return axios.post(`/post/${postData.gpostId}`, { content: postData.content },{ withCredentials: true ////////////////////////////////////////////////////////// }); //////////////////////////////////////////////////////////////////////////////// } function* addPost(action) { try { const result = yield call(addPostAPI, action.data); yield put({ type: ADD_POST_SUCCESS, data: { //////////////////////////////////////////////////////////////// gpostId: action.data.gpostId, content: result.data, },////////////////////////////////////////////////////////////////////// }); console.error(e); } catch (e) { yield put({ type: ADD_POST_FAILURE, error: e, }); } } function* watchAddPost(){ yield takeLatest(ADD_POST_REQUEST, addPost); } // 게시물 로드하기 function loadMainPostsAPI(gpostId) { // http://localhost:3060/post/10000 return axios.get(`/posts/${gpostId}`); ////////////////////////////////////////// } /////////////////////////////////////////////////////////////////////////////////// function* loadMainPosts(action) { try { const result = yield call(loadMainPostsAPI, action.data); yield put({ type: LOAD_MAIN_POSTS_SUCCESS, data: { gpostId: action.data, content: result.data, }, }); } catch (e) { yield put({ type: LOAD_MAIN_POSTS_FAILURE, error: e, }); } } function* watchLoadMainPosts() { yield takeLatest(LOAD_MAIN_POSTS_REQUEST, loadMainPosts); } < server.js / front> server.get('/post/:id', (req, res) => { // http://localhost:3060/post/1000000 return app.render(req, res, '/posted', { id: req.params.id }); }); < posted.js / pages / front > - server.js 에서 연결해주는 동적페이지 // 그룹: 동적페이지 const Posted = () => { . . . return ( <> <div className="wrap"> {/* GpostId와 그룹의 id가 같을경우에만 화면에 표시 */} {GroupPosts.map((val)=>{ var gid = window.location.href.split("/").reverse()[0]; if( gid == val.id){ return( <div> <GroupBox gpost={val} gimg={val.GImgs} /><UploadForm gpost={val} /> </div> ); } })} </div> </> ); }; Posted.getInitialProps = async (context) => { console.log('posted getInitialProps', context.query.title); }; export default Posted; < UploadForm.js / Component / front > - 게시물올리는 컴포넌트 onSubmitForm 함수부분 const onSubmitForm = useCallback((e) => { e.preventDefault(); if (!text || !text.trim()) { return alert('게시글을 작성하세요.'); } const formData = new FormData(); imagePaths.forEach((i) => { formData.append('image', i); }); formData.append('content', text); //////////////////////////////////////////////////// formData.append('GpostId', gpost.id); //////////////////// <- ////////////////////////// dispatch({ //////////////////////////////////////////////////// type: ADD_POST_REQUEST, data: formData, }); }, [text, imagePaths, gpost.id]); < post.js /reducers / front > // 게시물 불러오기 case LOAD_MAIN_POSTS_REQUEST: { return { ...state, mainPosts: [], }; } case LOAD_MAIN_POSTS_SUCCESS: { return { ...state, mainPosts: action.data, }; } case LOAD_MAIN_POSTS_FAILURE: { return { ...state, }; } < WorkBench > - GpostId 의 파란색부분은 워크벤치에서 임의로 넣어주었습니다. + 노드 백서버 오류메세지입니다
-
미해결자바 스프링 프레임워크(renew ver.) - 신입 프로그래머를 위한 강좌
maven update project 가 안됩니다.
동영상대로 따라했을때 J2SE-1.5 가 1.8로 변해야하는데 제 이클립스에서는 변화가 없습니다. 무엇이 문제일까요? 구글링을 해보고 읽어보았는데 딱히 해결방안이 안나와있네요. 답변 주시면 감사하겠습니다.
-
해결됨C 프로그래밍 - 입문부터 게임 개발까지
for 질문
#include<stdio.h> int main(void) { for (int i = 10; i <= 10; i++); { printf("hello %d\n", i); } } 오류(활성) E0020 식별자 "i"이(가) 정의되어 있지 않습니다. 박준서 C:\Users\aqws\source\repos\박준서\박준서\c 프로그래밍-입문부터 게임 개발까지.c 6 뭐가 문제일까요?
-
해결됨스프링 프레임워크 핵심 기술
@Autowired Target 질문
@Autowired의 타겟에 ElementType.ANNOTATION_TYPE은 언제 사용하는 건가요? @Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE}) @Autowire를 학습하고 있는 와중에 궁금한게 생겼습니다. Constructor, metod, field는 어떻게 사용하는지 알겠는데... parameter이랑 annotation은 사용한적이 없기 때문에 이걸 어떻게 사용하는지 의문이 드네요.ㅜㅜ;;; 파라미터야 대충 @Override public String print(@Autowired PetType petType, Locale locale) { return petType.getName(); } 이렇게 하면 될것 같은데, 어노테이션은 어떻게 사용을 해야할지.. 감이 잡히지 않네요. 인터넷에 찾아보니까 어노테이션에 추가하는 거라고는 하는데, 커스텀 어노테이션을 만들고, 그곳에다 주입을 해주는 건지... 아무튼... 이 두개는 아마 사용은 잘 하지 않을 것 같긴한데요. 스프링에 추가되어있어서 질문드립니다. 다시 질문을 작성하자면, @Autowired에서 target으로 parameter이랑, annotation은 언제 사용되는건가요?
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
윈도우 10 환경에서 강의를 따라가도 문제가 없을까요?
안녕하세요 강사님 구글 클라우드 플랫폼을 쓰지않고, 윈도우 10에서 아나콘다와 쿠다를 설치해서 강의를 진행해도 문제가 없는지 궁금합니다. 구글에 메일을 많이 보냈는데도 할당량을 풀어주지 않아, 크게 문제가 없다면 그렇게라도 해보고 싶어서 질문드립니다.
-
미해결비전공자를 위한 개발자 취업 개론
자바는 어떤가요?
안녕하세요 튜터님. 저는 30살 직장인이며, 개발자로 전직하려고 하고 있습니다. 제가 개발자가 되려는 이유는 스타트업을 창업하거나 참여하고 싶어서입니다. Okky에서 보니 자바를 배우라는 말이 많고, 인프런에서도 배달의민족 로드맵을 보니 자바를 베이스로 하고 있더라구요. 그런데 튜터님께서는 자바스크립트와 파이썬을 추천해주셔서, 고민이 됩니다. SI를 가고 싶은 마음은 없으며, 디자인보다는 로직 짜는데 흥미가 있어 서버 개발자가 되려고 합니다.
-
해결됨Flutter 입문 - 안드로이드, iOS 개발을 한 번에 (with Firebase)
29강 Firebase와 Google 로그인 기능 구현 수업 진행 중 login_page.dart 파일 내부 소스 코드에서 에러 발생되는 부분에 대하여 문의 드립니다.
FirebaseUser user = await _auth.signInWithCredential( GoogleAuthProvider.getCredential(idToken: googleAuth.idToken, accessToken: googleAuth.accessToken)); login_page.dart 파일 내부 위 코드에서 아래와 같은 에러 (A value of type 'AuthResult' can't be assigned to a variable of type 'FirebaseUser'. ) 가 발생하고 있습니다. 어떻게 해야 하는지 문의 드립니다.
-
미해결우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)
잘못된 클로저 사용 예시에서 궁금한 점이 있습니다.
리스트인 series처럼 cnt, total도 자유 변수로 선언한 것인데 cnt, total만 할당 전에 참조되었단 오류가 뜹니다. 그럼 series를 사용한 예시에서 series.append(v) 는 '참조'가 아닌 건가요? 내용이 정리되지 않아 한 번 여쭤봅니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
질문입니다.
로그인을 하려는 데 계속 이 화면만 뜨네요. 아이디와 비밀번호가 일치하는 것은 확인헀습니다. 코드야 copy and paste니 문제가 없다고 생각합니다만 ㅠ 무엇이 문제 일까요?? props으로 price까지 잘 받는데 결제만 딱 안되네요. 감사합니다. 참고로, 강의 완성된 소스코드를 클론해서 했는데도 동일한 화면이 떴습니다
-
미해결우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)
GIL과 멀티스레드
멀티스레드가 같은 자원을 공유하게 되면 GIL 때문에 락이 걸린다고 하셨는데, 그럼 다수의 스레드가 같은 global변수를 변경하는 함수를 실행하면 에러가 발생하나요? 이를 회피하기 위해서 멀티 프로세싱을 하는거구요?
-
미해결홍정모의 따라하며 배우는 C언어
*str5 질문있습니 다
str1~4와 다르게 지정된 메모리 값이 안들어오고 주소를 적는 메모지 사이즈 만큼 들어온다고 햐셨는데 그 주소 사이즈가 4바이트로 잡혔는고 포인터 주소 자체의 사이즈가 4바이트라고 하셨는데 그럼 모든 포인터 변수 자체의 사이즈가 4바이트인건가요??
-
해결됨Java TPC 실전프로젝트 (Java API 활용)
강사님 이거 제목이 이상해요
오타이신거같은데..아닌가요? PDT -> PDF
-
미해결우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)
StopIteration 예외 처리
안녕하세요 선생님, @12:58에서 cr1.send(100)을 했을 때 발생하는 StopIteration을 처리하기 위해선 예외처리가 필요한것 처럼 일반적으로 코루틴은 StopIteration 처리 문구를 넣어줘야하나요?
-
미해결React로 NodeBird SNS 만들기
typeError
https적용후 에러 입니다. 함수를 사용 못한다는데 ..
-
미해결Flutter 입문 - 안드로이드, iOS 개발을 한 번에 (with Firebase)
오류가 뜨는데 해결을 못 하겠어요.
[√] Flutter (Channel stable, v1.12.13+hotfix.9, on Microsoft Windows [Version 10.0.17134.1425], locale ko-KR) [X] Android toolchain - develop for Android devices X Unable to locate Android SDK. Install Android Studio from: https://developer.android.com/studio/index.html On first launch it will assist you in installing the Android SDK components. (or visit https://flutter.dev/setup/#android-setup for detailed instructions). If the Android SDK has been installed to a custom location, set ANDROID_HOME to that location. You may also want to add it to your PATH environment variable. [√] Android Studio (version 3.6) [!] VS Code (version 1.44.2) X Flutter extension not installed; install from https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter [!] Connected device ! No devices available
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
저 역시 여기서 막혔네요.
postman 에서 sending 버튼 누르면 하염없이 "sending request..." 이 메세지만 나옵니다^^;;; 더이상 진행을 못하고 있습니당..^^;; 도와주세요 userSchema.pre('save', function ( next ) { var user = this; if (user.isModified('password')) { //비밀번호를 암호화 시킨다. bcrypt.genSalt(saltRounds, function (err, salt) { if (err) return next(err) bcrypt.hash(user.password , salt, function (err, hash) { if (err) return next(err) user.password = hash next() }) }) } }) const User = mongoose.model('User', userSchema) module.exports = { User }
-
해결됨[개정판] 파이썬 머신러닝 완벽 가이드
20 뉴스그룹 분류 강의 질문입니다.
LogisticRegression()으로 학습을 했을 때 아래와 같은 경고문이 뜹니다. Increase the number of iterations (max_iter) or scale the data as shown in: https://scikit-learn.org/stable/modules/preprocessing.html Please also refer to the documentation for alternative solver options: https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG) [Parallel(n_jobs=1)]: Done 15 out of 15 | elapsed: 26.1min finished C:\Users\Taylor\anaconda3\envs\ml_env\lib\site-packages\sklearn\linear_model\_logistic.py:940: ConvergenceWarning: lbfgs failed to converge (status=1): STOP: TOTAL NO. of ITERATIONS REACHED LIMIT. 해석해보니 'max_iter'까지 학습했으나 아직 정답에 수렴하지 못한 상태인 것 같은데 그냥 'max_iter'값을 늘려주면 될까요? 적절한 값을 선택하는 방법은 그냥 여러번 테스트 해보는 방법밖에 없나요?답변주시면 감사하겠습니다.* 한 가지 더 질문이 있습니다!공부를 하다보니 머신러닝 분야중에서도 NLP, 텍스트가 가장 재미있었습니다.그래서 이 쪽을 더 공부해보고 싶어 책을 좀 찾아봤는데 이렇게 공부하는게 좋을지 아니면그냥 인터넷으로 보며 공부하는게 좋을까요?(혹시 추천해주실 만한 책이 있을까요? 답변하기 좀 그러시다면 안하셔도 됩니다!)
-
해결됨Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
list 순서
똑같이 진행했는데 저는 선생님이랑 다르게 리스트 순서가 역순으로 나오는데 무슨 차이인가요?
-
미해결우디의 포토샵 강좌
안녕하세요 ! 다리 길이 늘리는 데 다리 이미지가 잘려서 늘려집니다 ..ㅠ
안녕하세요! 유익한 강의 감사드립니다. 다름이 아니라 사진처럼 다리 이미지 사진이 아래로 늘려지지 않고, 잘려서 커지는 데 이 문제는 어떻게 해결해야 할까요? 사진에서 '+' 누른 다음 늘릴 이미지 지정해주고 ctrl + t 를 통해서 freetransform 을 해주었지만 위와 같은 문제가 발생했습니다 ㅠㅠ canvas 와 image 사이즈 둘 다 조정했음에도 위와 같은 문제가 발생합니다. 도와주신다면 정말 감사하겠습니다 :)
-
미해결예제로 배우는 스프링 입문 (개정판)
안녕하세요 spring 입문자 입니다.
취직을 하게 되었는데 회사에 spring을 사용해서 백기선님 강좌보고 공부해보려고 합니다. 강의가 많던데 순서를 알 수 있을까요?