1

次のように、Meteor の MongoDB からドキュメントを取得しています。

Template.SubTasks.helpers ({
   subelement: function (){


      var sublen = TodosCol.find(this);
      // var sublen2 = ????

      return sublen2;
  }


});

それはうまく機能し、サブレンはオブジェクトとして返されます。しかし、私がそれを配列に変換しようとしているとき(たとえば、次のように:

var sublen2 = sublen.toArray();

また

var sublen = TodosCol.find(this).toArray();

またはコレクション全体 (「this」なし) では機能せず、Chrome コンソールで「未定義は関数ではありません」というエラーが表示されます。

私も試しました

var sublen2 = sublen.propertyName;

それは運のないオブジェクトだからです。

私は何を間違っていますか?

ありがとう

編集:

mongo ドキュメントの配列に格納されている値を反復処理しようとしています。たとえば、それらを個別のdivとして出力したい。シンプルなタスクリストです。タスクはうまく反復していますが、特定のタスクに割り当てられたサブタスクを出力しようとしています。サブタスクは、「親タスク」と同じドキュメントに文字列の配列として保存されます。

テンプレート:

<template name='SubTasks'>
    <div class='sub-output {{_id}}'>
        {{#each subelement}}
            <div class='sub-task {{_id}}'>
                {{subtask}}
             </div>
        {{/each}}
    </div>
</template>
4

3 に答える 3

0

問題は、javascript オブジェクトにメソッドがないことtoArray()です。より具体的な情報がなければ、私は多くの助けを提供することはできません. つまり、配列に正確に何を含めたいですか? オブジェクトには、プロパティとも呼ばれるキーと値のペアが含まれています。オブジェクトを最初に受け取ったときにコンソールにログを記録し、配列を構成するオブジェクトの部分を確認する必要があります。

たとえば、オブジェクトのキー/プロパティの配列が必要な場合は、オブジェクトsublen.keys()の各プロパティ (キー) の文字列名の配列を返す を試すことができます。

おそらく、何らかのキーの値としてオブジェクトに既に格納されている配列が必要になるでしょう。オブジェクトをログに記録すると、このキー/プロパティを見つけて、ドット表記でアクセスできます。sublen.<property-name>

ここにアクセスして、js オブジェクトにどのような種類のメソッドがあるかを確認してください: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object

于 2014-11-27T09:34:07.273 に答える
0

MongoDB コレクションがあり、そのコレクション内にsubtasks、配列を持つというキーがあると仮定しています。

Template.tasks.helpers({
  tasks:function(){
    return Tasks.find({}).fetch();
  }
});

次に、HTML テンプレートで。

<template name="tasks">
  {{#each tasks}}
    <div id ="{{_id}}">
        <p>{{title}}</p>
        <ul>
            {{#each subtasks}}
                <li>
                    <p>{{this}}</p> 
                </li>
            {{/each}}
        </ul>
    </div>
  {{/each}}
</template>
于 2014-11-27T11:03:20.210 に答える