4

これは最も奇妙なことです。何らかの理由で自動公開をオンにしても、ブラウザ コンソールからコレクションにアクセスできません。以下のコードは、アイテムをコレクションに入力できる単純なリスト プログラムで、画面にリストとして表示されます。コンソールで People.find() または People.find().fetch() と入力してデータベースにアクセスしようとすると、「ReferenceError: Can't find variable: People」というエラーが表示されます。

自動公開をオンにしているので、クライアントからコレクションにアクセスできると思っていたのに、なぜこれが起こっているのですか?

コード:

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);  
    }
});

}
4

2 に答える 2

13

@coffeescriptを使用していない限り、使用する必要はありません。プレーンな JavaScript で を削除してvar、ファイルの外部 (Chrome コンソールを含む) のどこからでも変数にアクセスできるようにします。

var People = new Meteor.Collection("people");

になる

People = new Meteor.Collection("people");

coffeescript を使用するには、.coffee拡張子を使用して実行meteor add coffeescriptし、meteor が coffeescript ファイルを js ファイルにコンパイルできるようにします。

于 2013-08-04T12:13:51.640 に答える