6 글 보임 - 1 에서 6 까지 (총 6 중에서)
-
글쓴이글
-
2022년 7월 24일 23:04 #39364
모짜비참가자현재 기능 구현 중에 사용자가 닉네임 검색(버튼 클릭) - 서버에서 해당 닉네임 API 검색으로 데이터 뽑기(여러 캐릭터 나옴) - 사용자 DB에 없는 캐릭터라면 추가 - 추가 된 캐릭터 개수 페이지에 출력(query string으로 전달) 이런 형태로 기능을 구현하려고 하는데요. DB에 데이터 추가는 되지만 query string을 전달 하려하면 항상 undefined만 전달됩니다 ㅠㅠ 구글링을 해봤을 때는 callback을 써라, promise를 써라, async/await를 써라 하는데 제가 잘 몰라서 정상 작동을 안하는 건지 계속 undefined만 뜨네요... 아래는 제가 쓴 코드고요 addCharacter 함수에서 console.log(queryString)에서 '/?errMsg=notFound' 등 문자열이 뜨게 하고 싶습니다.
<hr />
const searchCharacter = (characterName, callback) => { var queryString = ''; axios({ method : 'get', url : 'http://152.70.248.4:5000/userinfo/'+encodeURI(characterName) }) .then((result)=> { var data = result.data; if (data.Result === 'Failed' && data.Reason === 'Error'){ // Error 반환할 때 console.log('검색되지 않음'); return queryString = '/?errMsg=notFound'; } else if (data.Result === '1레벨') { // 레벨 낮은 캐릭일 때? console.log('사용자 정보가 부족함'); return queryString = '/?errMsg=littleInfo'; } else if (data.Basic) { // 정상 호출 console.log('정상 호출'); return queryString = '/?addChar=' + data.CharacterList; db.collection('account').findOne({ email: req.user.email }, function (err, result) { // account 컬렉션에서 email로 유저 찾기 if (err) { console.log(err); res.redirect('/'); }; const connectId = result._id; const characterList = data.CharacterList;
characterList.forEach(function(character) { // 캐릭 리스트 for문 돌리기 db.collection('character').findOne({ connect_id: result._id, nick_name: character.Name}, function (err, result) { // 캐릭터 컬렉션에서 캐릭터들 불러오기 if (err) console.log(err); if (!result) { // db에 저장되지 않았다면 추가해주기 // db.collection('character').insertOne({ // connect_id: connectId, // nick_name: character.Name, // class: character.Class, // item_level:parseFloat(character.Level.substr(3).replace(',','')), // server:character.Server // } // , function(err, result){ // addChars.push(character.Name); // console.log(character.Name + ' 추가완료 '); // }); console.log(character.Name + ' 추가완료 '); }; }); }); }); } else { // 알 수 없음 return queryString = '/?errMsg=unknown'; }; }); callback(); }
const addCharacter = (queryString) => { console.log(queryString); }
app.post('/search', (req, res)=>{ console.log('검색 : ' + req.body.characterName); const characterName = req.body.characterName;
searchCharacter(characterName, addCharacter);
});
2022년 7월 25일 10:42 #39387
codingapple키 마스터?기호 이런게 없는듯요 'http://152.70.248.4:5000/userinfo/?변수명=' + characterName 여기로 get요청해봅시다
2022년 7월 25일 11:33 #39397
모짜비참가자아뇨 'http://152.70.248.4:5000/userinfo/어쩌구' 외부 API호출 응답은 이상이 없는데 받은 데이터를 DB에 추가하면 추가한 개수를 페이지에 나타내려고 (e.g. '00개의 데이터를 추가했습니다') Array에 데이터를 저장 해 놓고 queryString으로 전달하면 'localhost:8080/settings/?변수명=(원래 queryString 자린데 암것도 없음)' 이런식으로 전달이 안됩니다.
2022년 7월 25일 14:16 #39420
codingapple키 마스터서버에서 유저에게 데이터보내는거면 res.send(searchCharacter(characterName, addCharacter)) 하면 보내질듯요 서버에서 유저에게 데이터보내는거면 query string 말고 그냥 array object 같은거 보내는게 더 쉽습니다
2022년 7월 25일 19:18 #39439
codingapple키 마스터res.render(메인페이지, 데이터) 하면 똑같을듯요 아니면 프론트엔드에서 window.location.href = '/경로' 실행하면 페이지 이동됩니다
-
글쓴이글
6 글 보임 - 1 에서 6 까지 (총 6 중에서)
- 답변은 로그인 후 가능합니다.