2016-02-23 92 views
0

此流星應用程序已刪除不安全和自動發佈,並添加帳戶密碼。
meteor:PRIMARY> db.users.find({});也顯示我使用的唯一用戶憑據的存在。
調用Meteor.call('addTasks1',params);拋出錯誤,進一步檢查顯示Meteor.userId()null 爲什麼是這樣以及如何解決它?謝謝流星userId始終爲空

更新 根據斯蒂芬伍茲建議的修復;
當我將服務器上的方法addTasks1從Meteor.userId()更改爲this.userId時,它仍會引發錯誤。

/////////////////////////// 
//  both/both.js  // 
/////////////////////////// 
Tasks1 = new Mongo.Collection('tasks1'); 


/////////////////////////// 
// client/client.js // 
/////////////////////////// 
Template.login.events({ 
    'click #logMe': function() { 
    var credentials = [$('#id').val(), $('#pin').val()]; 
    Meteor.call('logMeIn', credentials); 
    } 
}); 

Template.footer.events({ 
    'click button': function() { 
    if (this.text === "SUBMIT") { 
     var inputs = document.getElementsByTagName('input'); 
     for (var i = 0; i < inputs.length; i++) { 
     var params = {}; 
     params[inputs[i].name] = inputs[i].value; 
     Meteor.call('addTasks1', params); 
     } 
    } 
    } 
}); 


/////////////////////////// 
// server/server.js // 
/////////////////////////// 
Meteor.methods({ 
    logMeIn: function (credentials) { 
    Accounts.createUser({username: credentials[0], password: credentials[1]}); 
    } 
}); 

Meteor.publish('tasks1', function(){ 
    return Tasks1.find({userId: this.userId}); 
}); 

Meteor.methods({ 
    addTasks1: function (doc) { 
    if (Meteor.userId()) { 
     Tasks1.insert(doc); 
    } else { 
     throw new Meteor.Error("Not Authorized"); 
    } 
    } 
}); 
+0

如果你輸入'Meteor.userId()'到控制檯客戶端它是否說空? –

+0

是的,當我在瀏覽器控制檯中輸入時, –

+0

你實際上在登錄用戶嗎?您的流星方法logMeIn僅創建一個用戶,而不是簽名。 –

回答

0

您需要在登錄用戶,使用Meteor.loginWithPassword(<USERNAME>, <PASSWORD>)在客戶端的登錄創建的用戶。

此外,addTasks1,你的流星方法,在服務器上執行。你想在服務器上使用this.userId而不是Meteor.userId()。

+0

它仍然會拋出同樣的錯誤。 –