0

いくつかのメソッドを持つオブジェクトのコレクションを使用しようとしています。

すなわち:

Targets = new Meteor.Collection("targets");
Targets.insert({
  id : 0,
  title : function(){
    if(false){
      console.log("true");
      return 'Le commencement';
    }
    else
    {
      console.log("false");
      return 'Le début';
    }
  },
  text : 'Lorem ipsum dolor.',
});`

後でタイトルを呼び出します

Template.content.target = function() {
  var currentPosition = Meteor.user().profile.position;
  return Targets.findOne({id: parseInt(currentPosition)});
};

そして私のテンプレートで:

{{#if currentUser}}
  <h2>{{target.title}}</h2>
  <p>{{target.text}}</p>
{{/if}}

流星の反応は完全にランダムです...

コンソールに「false」が表示され、タイトルが「Le debut」になることがあります。時々、タイトルとして「Le beginment」が表示され、コンソールには何も表示されません。コンソールに "false" が 2 回表示され、タイトルとして "Le debut" が数秒間表示された後、消えてしまうことがあります...

どうすればいいのかわからない...

おそらく、mongo に格納されているオブジェクトのメソッドだけが非常に悪い考えです。

手伝ってくれてありがとう。

4

1 に答える 1

0

Mongodb はデータベースです。内部にロジック コードを配置しないでください。したがって、オブジェクトの属性を抽出してから、コレクションで変換関数を使用する必要があります。このような:

Targets = new Meteor.Collection("targets", {
    transform: function(doc) {
        return new Target(doc)
    }
});

または、オブジェクトを作成したくない場合Target:

Targets = new Meteor.Collection("targets", {
    transform: function(doc) {
        doc.title = function(){
            if(false) {
                console.log("true");
                return 'Le commencement';
            } else {
                console.log("false");
                return 'Le début';
            }
        return doc
        }
    }
});
于 2013-06-18T17:38:12.610 に答える