2013-11-26 4 views
2

Meteorjs와 MongoDB를 처음으로 사용합니다. Q & 응용 프로그램에서 작업 중입니다. Meteor 데이터베이스 호출을 사용하는 객체 목록이있는 곳입니다. 이Meteorjs의 값을 얻기 위해 Mongobd 오브젝트를 반복하십시오.

Template.questions.questions = function() { 
questions= Meteor.questions.find({topic_id: Session.get("currentTopicId")}); 
return questions 
} 
모든 질문 객체 내가 루퍼 목록을 통해 원하는 및 길이 50의 속성 중 하나를 분할 할 다음 내가 가지고있는 database.what 이러한 분할 할 개체 목록을 보낼 것입니다 질문 목록에는 question_text 속성이 있습니다. 루프를 사용하여이 속성을 50의 길이로 나누고 빈 목록으로 푸시하고 해당 목록을 반환하고자합니다.
<tbody> 
      {{#each questions}} 
      <tr> 
       <td class="span2" style="overflow:hidden;width:50px"> 
        <a href="#" data-id="{{_id}}" class="edit"> {{question_text}}</a> 
       </td> 

      </tr> 

      {{/each}} 

      </tbody> 

나에게 내가 meteorjs이를 acieve 수있는 방법들을 제안처럼
questions_list=[] 
for(i=0;i<questions.length;i++){ 
    question=questions[i].question_text[0:50] // python syntex to get first 50 char of a string 
    questions_list.push(question 
} 
return questions_list 

내 HTML 같다. 내 문제는 컬렉션, 결과, 쿼리 같은 많은 특성이 있습니다이 질문 목록을 통해 반복 할 때입니다. 여기 나는이 객체 목록을 반복 할 수 없다. 내가이 쿼리와 일치하는 모든 질문의 단축 텍스트의 당신에게 목록을 제공합니다

답변

4

meteorjs으로 다시 던져 오류 메시지를 얻을 수있는 방법과 동일한 방법으로

는 :

var questions = Questions.find({...}).map(function(question) { 
    return question.text.substr(0,50); 
}); 

직접 사용할 수

Template.questions.questions = function() { 
    return Questions.find({...}).map(function(question) { 
     return question.text.substr(0,50); 
    }); 
}; 

 

: 도우미에서 그런데

 

, Questions.find({...})목록 질문,하지만 당신은 (위의 그 map 방법 등) 효과적인 방법으로 쿼리 데이터를 조작하는 데 사용할 수있는 커서 객체를 반환하지 않습니다. 원시 배열을 가져 오려면 해당 커서에 fetch을 사용해야합니다 : Questions.find({...}).fetch().

+1

좋아요, 그게 문제였습니다. 전에는 오늘 django 만 사용하여 요청이 배열을 반환합니다. 그리고 나는 여기에서 노력하고 있었다. 고맙습니다. 나는 console.log (question.question_text.substr (0,50))를 실행했다. 그러나 아무것도 템플릿으로 돌아갑니다. 감사합니다. Hubert OG –

+0

실수가 내 템플릿에 있다고 생각합니다. 템플릿이 맞습니까? –

+1

위의 Hubert가 제공 한'Template.questions.questions'를 사용하고 있다면 문자열 목록을 반환합니다. 템플릿에서 {{{_id}}'와'{{questionText}} '속성을 가질 것으로 예상됩니다. 이를 시도하려면 다음을 시도하십시오 : 'Template.questions.questions = function() { return questions.find ({...}) map (function (question) { return {_id : question._id, questionText : question .본문.substr (0,50)}; }}); }' –

2

당신은 단지 데이터를 표시하는 경우 당신은 핸들 도우미 만들 수 있습니다

Template.questions.helpers({ 
    first50: function(question) { 
    return question.text.substr(0,50); 
    } 
}); 

그런 다음 도우미를 추가

Template.questions.questions = function() { 
    return Questions.find({...}); 
}; 

그런 다음 템플릿에서 당신이 할 수 있습니다 :

<tbody> 
    {{#each questions}} 
    <tr> 
     <td class="span2" style="overflow:hidden;width:50px"> 
     <a href="#" data-id="{{_id}}" class="edit"> {{first50 question_text}}</a> 
     </td> 
    </tr> 
    {{/each}} 
</tbody> 
+1

Bruce Hubbard에게 감사드립니다. 솔루션을 제공하려고하면 예외를 다시 계산할 수 있습니다. –

관련 문제