這是最奇怪的事情,出於某種原因,即使啓用了自動發佈,我也無法從瀏覽器控制檯訪問該集合。下面的代碼是一個簡單的列表程序,您可以在這些程序中輸入項目並將其顯示在屏幕上。在控制檯中,當我嘗試通過輸入People.find()或People.find()來訪問數據庫時,它會引發一個錯誤'ReferenceError:Can not find variable:People'使用Meteor時,我無法從客戶端控制檯訪問集合?
這是怎麼回事我有自動發佈,所以我想我可以從客戶端訪問集合?
代碼:
var People = new Meteor.Collection("people");
if (Meteor.isClient) {
console.log(People.find());
Template.personList.people = function() {
return People.find();
};
Template.personForm.events({
'click button': function(e, t) {
var el = t.find("#name");
People.insert({ name: el.value });
el.value = "";
}
});
Template.person.editing = function() {
return Session.get("edit-" + this._id);
};
Template.person.rendered = function() {
var input = this.find("input");
if(input) {
input.focus();
}
};
Template.person.events({
'click .name': function (e, t) {
Session.set("edit-" + t.data._id, true);
},
'keypress input': function (e, t) {
if (e.keyCode == 13) {
People.update(t.data._id, { $set: { name: e.currentTarget.value }});
Session.set("edit-" + t.data._id, false);
}
},
'click .del': function (e, t) {
People.remove(t.data._id);
}
});
}
因此,我發現使用Meteor 0.6時,集合不是全局使用var定義的。我刪除了var,現在我可以從控制檯訪問Collection。雖然我讀到,你也可以把@符號放在集合變量的前面,像這樣:@People = new Meteor.Collection(「people」);我做了這個,但它不工作。我如何讓@符號起作用? – nearpoint