2014-09-10 5 views
0

По какой-то нечетной причине моя .update не работает должным образом. Я думал, что селектор this._id является проблемой здесь, но я попытался передать исходный идентификатор одного из элементов в моей базе данных. С good_input содержимое .insert хранится в базе данных, но .update просто пропустит просмотр результатов..update Не работает - Meteor

Template.newInstitution.events({ 
    'click #form_institution': function() { 
     var inst_name = $('#name')[0].value; 
     var inst_type = $('#type')[0].value; 
     var inst_school = $('#school')[0].value; 
     var inst_desc = $('#description')[0].value; 
     var good_input = true; 
     if (inst_name === "") { 
     $('#name')[0].placeholder = "Please enter a name"; 
     $('#nameDiv').addClass("has-error"); 
     good_input = false; 
     } 
     if (inst_type === "") { 
     $('#type')[0].placeholder = "Please enter a type"; 
     $('#typeDiv').addClass("has-error"); 
     good_input = false; 
     } 
     if (inst_school === "") { 
     $('#school')[0].placeholder = "Please enter your affiliated school"; 
     $('#schoolDiv').addClass("has-error"); 
     good_input = false; 
     } 
     if (inst_desc === "") { 
     $('#description')[0].placeholder = "Please enter a description"; 
     $('#descDiv').addClass("has-error"); 
     good_input = false; 
     } 
     if (good_input) { 
     Institutions.insert({ 
      admin: Meteor.userId(), 
      title: inst_name, 
      type: inst_type, 
      school: inst_school, 
     description: inst_desc 
     }); 
     Institutions.update({_id: this._id}, 
      {$push: { 
      members: Meteor.userId() 
      }} 
     ); 
     Router.go('songs'); 
     } 
    } 
    }); 

https://bpaste.net/show/befaba419c19

ли кто-то определить проблему здесь и объяснить причину этого?

+0

https://bpaste.net/show/8bc51e4e8a4b - Вот некоторые другие соответствующие фрагменты из js-файла, но не связанные с этим шаблоном. –

ответ

1

Как вы думаете, что this._id устанавливается? Если не будет какого-то дополнительного контекста, не видно, нет такой вещи. Хотя я согласен с тем, что вы должны просто включить данные в начальный insert, возможно, что вы ищете var id = Institutions.insert({...}) и используя id вместо this._id.

+0

Да. Понял. Собственно ответил на мой вопрос :) –

1

Это было исправление. В принципе, я могу просто установить массив в исходном заявлении и использовать $ push позже.

Template.newInstitution.events({ 
    'click #form_institution': function() { 
     var inst_name = $('#name')[0].value; 
     var inst_type = $('#type')[0].value; 
     var inst_school = $('#school')[0].value; 
     var inst_desc = $('#description')[0].value; 
     var good_input = true; 
     if (inst_name === "") { 
     $('#name')[0].placeholder = "Please enter a name"; 
     $('#nameDiv').addClass("has-error"); 
     good_input = false; 
     } 
     if (inst_type === "") { 
     $('#type')[0].placeholder = "Please enter a type"; 
     $('#typeDiv').addClass("has-error"); 
     good_input = false; 
     } 
     if (inst_school === "") { 
     $('#school')[0].placeholder = "Please enter your affiliated school"; 
     $('#schoolDiv').addClass("has-error"); 
     good_input = false; 
     } 
     if (inst_desc === "") { 
     $('#description')[0].placeholder = "Please enter a description"; 
     $('#descDiv').addClass("has-error"); 
     good_input = false; 
     } 
     if (good_input) { 
     Institutions.insert({ 
      admin: Meteor.userId(), 
      title: inst_name, 
      type: inst_type, 
      school: inst_school, 
      description: inst_desc, 
      members: [Meteor.userId()] 
     }); 
     Router.go('songs'); 
     } 
    } 
    });