基于动态模板向集合添加元素

时间:2015-11-28 20:04:40

标签: javascript mongodb meteor

所以我有一个民意调查模板,可以提供与用户想要的一样多的问题。如何将所有问题插入集合的元素中?由于之前我只有三个,所以我手动插入它们:

var newPoll = {
          question: event.target.question.value,
          choices: [
            {  text: event.target.choice1.value, votes: 0 },
            {  text: event.target.choice2.value, votes: 0 },
            {  text: event.target.choice3.value, votes: 0 }
          ],
          usersWhoVoted: [],
          poll_is_open: true,
          time_poll_closed: null,
 };

如果我现在可以拥有尽可能多的选择,我该如何插入所有选项?

1 个答案:

答案 0 :(得分:0)

如果您已实现本地集合来存储Choices相关数据,则可以使用 cursor.map() 函数循环您的集合,将正确的对象返回到数组中最后设置相应的数据:

if (Meteor.isClient) {
    Template.pollForm.events({
        'click #save-form': function(event, template) {
            var choices = Choices.find().map((choice) => ({
                text: template.find("input[name=" + choice.name + "]").value,
                votes: 0
            }));
            var newPoll = {
                question: event.target.question.value,
                choices: choices,
                usersWhoVoted: [],
                poll_is_open: true,
                time_poll_closed: null
            };
            Polls.insert(newPoll);
        }
    });
}