2015-04-07 51 views
0

我試圖通過單擊按鈕來更新文檔。但是,我不斷收到「內部錯誤」消息。我正在嘗試更新的文檔被稱爲「已確認」,並且可以使用true/false值。更新屬性無法正常工作流星/ MongoDB

這裏是我的methods.js

Meteor.methods({ 

'confirmUser1': function(currUserId) { 
    var currentUserId = currUserId; 
    Meteor.users.update(currentUserId, {$set: 
     { 
      'confirmed': true 
     } 
    }); 
    console.log('user verified!'); 
} 
}); 

這裏是我的模板事件幫手:

Template.Users.events({ 
'click .confirmUser': function(e, tmpl) { 
    e.preventDefault(); 
    var currentUserId = this._id; 

    Meteor.call('confirmUser1', currentUserId, function(error) { 
     if (error) { 
      alert(error.reason); 
     } else { 
      console.log('success!'); 
      Router.go('Admin'); 
     } 
    }); 
} 
}); 

我的按鈕:

<p><button class="confirmUser">Confirm User</button></p> 

注意:我使用的代碼非常類似於這個不同的更新按鈕/方法,它工作正常......所以我不知道這裏發生了什麼。

+0

您是否在用戶文檔上有確認的字段?或者你有'profile.confirmed'?如果你運行'Meteor.user()'還有什麼錯誤拋出控制檯? – Ethaan

+0

不,我還沒有確認的字段。我嘗試添加一個確認的字段,但它仍然不起作用。此外,我不希望確認的字段成爲配置文件的一部分。我希望它與配置文件屬性處於同一級別...... –

+0

如果我運行Meteor.user(),則不會收到任何錯誤。控制檯只是返回我的用戶對象及其關聯的屬性。 –

回答

2

嘗試使用Meteor.userId();,這在事件處理中的背景是使用內部Template.helper

完全不同。如果你做一個console.log(currentUserId)你應該得到不確定的。

所以改變這種

var currentUserId = this._id; 

了這一點。

var currentUserId = Meteor.userId();