2016-09-22 3 views
1

나는 투표 한 시간과 함께 사용자 ip와 투표 한 항목을 기록해야하는 폴링 응용 프로그램을 만듭니다.array.push를 사용하면 정의되지 않음이 발생합니다.

이 작업을 수행하려면 각 속성에 포함 된 각각의 '투표'에 대한 개체를 만든 다음 해당 개체를 배열로 밀어 내 요구 사항에 잘 맞을 것이라고 생각했습니다.

내 배열에 개체를 넣으려고 할 때까지 모든 것이 잘 돌아가고있었습니다. 현재 내 배열은 정의되지 않았다고합니다.

정확히 어떤 현상이 발생합니까? 나는 인덱스를 사용하고 객체에 votingArray [i]를 설정하려고 시도했지만 정의되지 않은 오류도 발생했습니다. ('votingArray.push (voteObject)'라인 69 인)

Express started on http://localhost:8080; press Ctrl-C to terminate. 
{ time: 1474584882143, pet: 'scout', ip: '::ffff:10.240.1.15' } 
TypeError: Cannot read property 'push' of undefined 
at trackVote (/home/ubuntu/workspace/Projects/projectTwo/app.js:69:14) 
at vote (/home/ubuntu/workspace/Projects/projectTwo/app.js:51:6) 
at /home/ubuntu/workspace/Projects/projectTwo/app.js:43:6 
at Layer.handle [as handle_request] (/home/ubuntu/workspace/Projects/projectTwo/node_modules/express/lib/router/layer.js:95:5) 
at next (/home/ubuntu/workspace/Projects/projectTwo/node_modules/express/lib/router/route.js:131:13) 
at Route.dispatch (/home/ubuntu/workspace/Projects/projectTwo/node_modules/express/lib/router/route.js:112:3) 
at Layer.handle [as handle_request] (/home/ubuntu/workspace/Projects/projectTwo/node_modules/express/lib/router/layer.js:95:5) 
at /home/ubuntu/workspace/Projects/projectTwo/node_modules/express/lib/router/index.js:277:22 
at param (/home/ubuntu/workspace/Projects/projectTwo/node_modules/express/lib/router/index.js:349:14) 
at param (/home/ubuntu/workspace/Projects/projectTwo/node_modules/express/lib/router/index.js:365:14) 

: 여기

내 코드입니다 :

//Vote for the pet passed into by user 
function vote(pet, time){ 
    linkService.incrementCount(pet); 
    trackVote(pet, time); 

    res.render('vote', { 
    pet: pet 
}); 
} 

var votingArray = []; 

function trackVote(pet, time) { 

    var voteObject = { 
     time: time, 
     pet: pet, 
     ip: req.ip 
     }; 

console.log(voteObject); 
    votingArray.push(voteObject); 
    console.log(votingArray); 

} 

function showResults(){ 
res.render('results', { 
    votingArray: votingArray 
    }); 
} 

그리고 여기 내 콘솔에서 오류가 편집 :

많은 사람들이 내가 선언했지만 varriable 'votingArray'를 인스턴스화하지 않았기 때문에 배열로, 그리고 내 발췌 문장은 내가 그 주석과 답변을 충족해야만하는 것을 다시 작성한 모든 것을 포함하지 않았다.

여전히 votingArray.push에 대해 동일한 오류가 발생합니다. 귀하의 변수 votingArray

var votingArray = []; 

//Vote for the pet passed into by user 
function vote(pet, time){ 
    linkService.incrementCount(pet); 

    var votingObject = 
    { 
     ip: req.ip, 
     pet: pet, 
     timecode: time 
    }; 

    votingArray.push(votingObject); 

    res.render('vote', { 
    pet: pet 
    }); 
} 


function showResults(){ 
res.render('results', { 
    votingArray: votingArray 
    }); 
} 
+2

에'votingArray'는 undefined''이다. 오류가 정확히 무엇을 말합니다. – vlaz

+0

예,하지만 정의되지 않은 이유는 무엇입니까? 나는 그것을 선언하고, 내가 배열과 콘솔에 집어 넣지 않으면 정의한다. 로그하라, 나는 똑같은 오류를 받는다. –

+2

'votingArray = [];'처럼'votingArray'를 초기 값으로 초기화하려고합니다. –

답변

2

초기화되지 않습니다

여기 내 새 코드입니다. 당신이 배열되고 싶은 경우에, 당신은 당신의 배열을 초기화하거나 파일에 떠있는 VAR을하는 대신 함수에 전달할

var votingArray = []; // Empty array instance 
+1

'배열처럼 잘 동작하도록하려면 배열이됩니다. – vlaz

+1

이와 같이 선언하면 동일한 오류 코드가 생성됩니다. 내 질문을 업데이트했습니다. –

+0

그 후에 앱을 다시 시작 했습니까? – zerkms

0

와 라인

var votingArray; 

를 교체해야합니다. TrackVote가 귀하의 질문에서 호출 된 곳의 사용법을 볼 수도 없지만 이것이 제 제안입니다.

var votingArray = []; 

function trackVote(pet, time) { 

    var voteObject = { 
     time: time, 
     pet: pet, 
     ip: req.ip 
     }; 

    console.log(voteObject); 
    votingArray.push(voteObject); 
    console.log(votingArray); 

} 

function trackVote(pet, time) { 
    var votingArray = []; 
    var voteObject = { 
     time: time, 
     pet: pet, 
     ip: req.ip 
     }; 

    console.log(voteObject); 
    votingArray.push(voteObject); 
    console.log(votingArray); 

} 

또는

function trackVote(pet, time, votingArray) { 

    var voteObject = { 
     time: time, 
     pet: pet, 
     ip: req.ip 
     }; 

    console.log(voteObject); 
    votingArray.push(voteObject); 
    console.log(votingArray); 

} 
+0

필자의 코드를 약간 다듬었지만 그 전에도 동일한 방법으로 오류가 발생했다. –

+0

어디에서'trackVote'를 부르시겠습니까? – httpNick

+0

현재 코드를 사용하면 더 이상 필요하지 않습니다. 나는 함수 투표에서 functionVote가 한 기능을 수행한다. –

관련 문제