私はユーザーのIPを記録するポーリングアプリを作成しています。投票したときの時刻に加えて、投票した選択肢もあります。array.pushを使用すると、定義されていません。
これを行うには、これらのそれぞれをプロパティとして含む各「投票」のオブジェクトを作成し、そのオブジェクトを配列にプッシュすることが自分のニーズに合っていると想像しました。
私のオブジェクトを配列にプッシュしてみるまで、すべてうまく動いていました。私は現在、私の配列は未定義であると言います。
正確には何が起こっていますか?私は、インデックスを使用して、オブジェクトにvotingArray [i]を設定しようとしましたが、それは同様に未定義のエラーを与えました。ここで
は私のコードです:
//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
});
}
そして、ここでは私のコンソールでのエラーです:
(ライン69 'のvotingArray.push(voteObject);' である)
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)
編集:
私は宣言しているが、varriable 'votingArray'私のスニペットには、私がこれらのコメントと答えを満たすために必要なものを書き直したものがすべて含まれていないことがわかりました。
私はまだvotingArray.pushについて同じエラーが発生しています。
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
});
}
に 'votingArray'はundefined''あります。正確にエラーの内容を示します。 – vlaz
はい、それはなぜ定義されていませんか?私はそれを宣言し、配列とconsole.logにプッシュしないかどうかを定義すると、同じエラーが発生します。 –
'votingArray = [];'のように 'votingArray'を初期値で初期化しようとします。 –