像Christian Fritz在評論你的問題時說過的,這可能是你的代碼執行時沒有完全加載的集合。如果您使用的是iron:router
,則可以使用subscribe
或waitOn
(如上所述):http://iron-meteor.github.io/iron-router/#the-waiton-option因此只有在收集準備就緒(意味着它們已完全加載)時才加載頁面。 您也可以將其放入幫助程序或使用Tracker Autorun來檢測您的條目何時可用,然後執行任何您想要的操作。
編輯:一種鐵樣品:路由器下面
// myproject.jsx
var Cars = new Mongo.Collection('cars');
if(Meteor.isServer)
{
Meteor.publish("myCollections", function() {
return Meteor.users.find();
});
Meteor.publish("anotherCollection", function(){
return Cars.find();
});
}
//lib/router.js
Router.route('/my-page', {
name: 'myPage',
layoutTemplate: 'myPage',
waitOn: function() {
'use strict';
return [Meteor.subscribe('myCollection'),Meteor.subscribe('anotherCollection')];
},
data: function() {
'use strict';
return Collection.findOne();
}
});
我有這個怪異的行爲了。每當我刷新頁面時,有時它會給出'undefined' –
沒有什麼是你的代碼錯誤,你只是不能確定何時執行代碼:在用戶集合同步到客戶端之前或之後。有各種各樣的方法,例如,使用從訂閱返回的ready()方法,或者在使用鐵路路由器時使用waitOn。但在大多數情況下,您可以忽略這一點,因爲反應性會照顧到它的更新頁面,無論它取決於此數據。 –
像基督教說,這沒有什麼不妥,你可以用一個簡單的if(u){// console.log(u)}來修復令人討厭的undefined並完成 – Ethaan