流行のこのコード。流星:テンプレートヘルパーの例外
Template.message.helpers({
message: function() {
var message = Messages.findOne({ _id: FlowRouter.getParam('messageId')});
var curTime = new Date();
console.log(message.createdAt.getHours());
return message;
}
});
が私にこの例外を与える:
Exception in template helper: [email protected]://localhost:3000/app/app.js?hash=0da6be4507e857f169e0cecb7b0874729eae4663:239:13
bindDataContext/<@http://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:3051:14
Blaze._wrapCatchingExceptions/<@http://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:1715:14
wrapHelper/</<@http://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:3103:14
[email protected]://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:3744:12
wrapHelper/<@http://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:3102:12
[email protected]://localhost:3000/packages/spacebars.js?hash=ebf9381e7fc625d41acb0df14995b7614360858a:234:13
template.message.js/Template.message</<@http://localhost:3000/app/app.js?hash=0da6be4507e857f169e0cecb7b0874729eae4663:85:31
[email protected]://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:2086:20
viewAutorun/</<@http://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:1934:18
[email protected]://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:3744:12
viewAutorun/<@http://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:1932:14
[email protected]://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:2271:12
[email protected]://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:1931:12
[email protected]://localhost:3000/packages/tracker.js?hash=997515fa2d5b0530ba07741da556c4b36963ef3b:339:5
[email protected]://localhost:3000/packages/tracker.js?hash=997515fa2d5b0530ba07741da556c4b36963ef3b:229:5
[email protected]://localhost:3000/packages/tracker.js?hash=997515fa2d5b0530ba07741da556c4b36963ef3b:613:11
[email protected]://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:1944:14
Blaze._materializeView/<@http://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:2080:5
[email protected]://localhost:3000/packages/tracker.js?hash=997515fa2d5b0530ba07741da556c4b36963ef3b:640:12
[email protected]://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:2079:3
[email protected]://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:1532:9
[email protected]://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:1474:3
[email protected]://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:1483:7
Blaze._materializeView/<@http://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:2113:25
[email protected]://localhost:3000/packages/tracker.js?hash=997515fa2d5b0530ba07741da556c4b36963ef3b:640:12
[email protected]://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:2079:3
[email protected]://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:2370:3
[email protected]://localhost:3000/packages/kadira_blaze-layout.js?hash=dbd1396d04e62378fc8792cdef18869a1108cedd:204:5
render/</<@http://localhost:3000/packages/kadira_blaze-layout.js?hash=dbd1396d04e62378fc8792cdef18869a1108cedd:77:9
[email protected]://localhost:3000/packages/meteor.js?hash=27829e936d09beae3149ecfbf3332c42ccb1596f:1077:17
withoutInvocation/<@http://localhost:3000/packages/meteor.js?hash=27829e936d09beae3149ecfbf3332c42ccb1596f:464:26
Meteor.bindEnvironment/<@http://localhost:3000/packages/meteor.js?hash=27829e936d09beae3149ecfbf3332c42ccb1596f:1105:17
[email protected]://localhost:3000/packages/meteor.js?hash=27829e936d09beae3149ecfbf3332c42ccb1596f:401:11
meteor.js:930:11
それは実際には2回印刷されますが、私は二度ここに表示大規模かつ不必要だと感じました。
app.jsの239行は、このようになります(ここでは7行目です)。
Template.message.helpers({ // 34
message: function() { // 35
var message = Messages.findOne({ // 36
_id: FlowRouter.getParam('messageId') // 36
}); // 36
var curTime = new Date(); // 37
console.log(message.createdAt.getHours()); // 38
return message; // 40
} // 41
しかし、時間はまだコンソールに印刷されます。
私の目標はcreatedAt日付を使用して現在のDateオブジェクトからそれを減算し、時間デルタを得ることです。しかし、私がmessage.createdAtを使って何をしようとしても、この奇妙な例外が生成されるため、私はこれまでにないことはありません。
私がconsole.log(message.createdAt)を実行すると、ブラウザコンソールで2つのISOフォーマット日付が表示されますが、2つの例外があります。
私がmessage.createdAt.getTime()のような何かを試すと、私はUnixタイムスタンプを取得します。
何が起こっているのですか?
私は実際に日付を減算して意図したとおりに使用することができましたが、コードは機能していても例外は表示され続けました。
(反応的な変更のために)ヘルパーが複数回実行されているため、複製が表示されます。 JS Dateオブジェクトである 'createdAt'とは何ですか? – chazsolo
mongoコレクションのISONateとして表示されますが、JSのDateオブジェクトと見なします。 yearとgetTime()のようなDate属性をいくつか使うことができます。 –
そのヘルパーをレンダリング/コールする前にサブスクリプションが終了するのを待っていますか? – chazsolo