2013-06-01 2 views
0

Кажется, что проблема с моими Posts.update(); метод.

var postProperties = { 
     url: $(e.target).find('[name=url]').val(), 
     title: $(e.target).find('[name=title]').val() 
    } 

    Posts.update(currentPostId, {$set: postProperties}, function(error){ 
     if (error) { 
      // display the error to the user 
      alert(error.reason); 
     } 
     else { 
      Meteor.Router.to('postPage', currentPostId); 
     } 
    }); 

currentPostId, вероятно, не в вине, так как удалить работает просто отлично:

Posts.remove(currentPostId); 

Так объект postProperties должен быть:

Object {url: "https://github.com/DiscoverMeteor/Microscope", title: "Random Title"} 

Сообщений есть URL, название и сообщение. У меня есть метод .deny() для сообщения, поэтому я не обновляю это.

Любое понимание того, что я делаю неправильно?

Спасибо за ваше время.

+0

Каковы значения 'currentPostId' и' this.currentPostId'? – Xyand

+0

this.currentPostId является «undefined», а currentPostId в этом случае «wHtYDGjRgbWMYnzMy». Поэтому я не понимаю, почему currentPostId терпит неудачу, а this.currentPostId не делает этого. – storedope

+0

'this.currentPostId' не прерывается, потому что нет такой записи для обновления. Попробуйте использовать 'Posts.update ({_ id: currentPostId}, ....)' – Xyand

ответ

0

Я посмотрел на моего терминала и так был

Exception while invoking method '/posts/update' ReferenceError: alert is not defined 

Проблема была забыта оповещения(); в Posts.deny(); метод. Из того, что я сейчас предупреждаю, не является частью Javascript, а DOM (?). После удаления предупреждения() все работало должным образом.

Предупреждение() в коде выше (Posts.update();) работает, потому что он находится в

Template.postEdit.events({...}); 

Следовательно, обработка DOM события, где тревога(); работает просто отлично.