流星返回值为字符串

时间:2015-11-11 11:24:58

标签: javascript mongodb meteor

这就是我想要实现的目标。 我有两个集合:QuestionsAnswers。 当用户回答问题时,答案将在Answers集合中设置,并随之传递问题的ID。

我正在使用此助手显示包含所有问题的列表:

questions: function (){
    return Question.find({});
}

这个html:

<ol>
    {{#each questions}}
        <li>{{question}}</li>
    {{/each}}
</ol>

我想在每个问题下面显示每个用户给出的答案。我想将问题的ID作为字符串值返回,因此我可以执行以下操作:

answers:function(){
    return Answer.find({question: <The ID of the question>});
}

任何人都可以帮我吗?

此致, →

2 个答案:

答案 0 :(得分:1)

假设您的Question集合具有以下架构(为简洁起见而简化):

QuestionSchema = new SimpleSchema({
    title: {
        type: String,
        label: "Question"
    },
    category: {
        type: String,
        label: "Category"
    }
});

并且您的Answer集合已

AnswerSchema = new SimpleSchema({
    text: {
        type: String,
        label: "Question"
    },
    author: {
        type: String,
        label: "Author"
    }
    question: {
        type: String,
        label: "Question"
    }
});

您可以通过创建两个模板助手来实现此目的,其中第一个只返回一个问题文档数组,第二个将一个问题ID作为参数,并返回带有该问题ID的所有答案的光标:

Template.questions.helpers({
    questions: function(){        
        return Question.find({}).fetch();
    },
    answers: function(questionId){
        return Answer.find({question: questionId}).fetch();
    }
});

接下来,模板需要嵌套的{{#each}}块,第一个块遍历问题数组,并将答案传递给下一个,作为下一个帮助器的参数。

<template name="questions">
    {{#each questions}}
        <h1>{{this.title}}</h1>
        <ol>
        {{#each answers this._id}}
            <li>{{text}}</li>
        {{/each}}
        </ol>
    {{/each}}
</template>

答案 1 :(得分:0)

尝试使用此代码。希望它有效

<ol>
{{#each questions}}
    <li>{{question}}</li>
    <li>{{answers}}</li>
{{/each}}
</ol>

在你的js文件中。

answers:function(){
 id = this._id
return Answer.find({question:id});
}

根据您对功能的回应,您可以使用或使用