此流星應用程序已刪除不安全和自動發佈,並添加帳戶密碼。
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");
}
}
});
如果你輸入'Meteor.userId()'到控制檯客戶端它是否說空? –
是的,當我在瀏覽器控制檯中輸入時, –
你實際上在登錄用戶嗎?您的流星方法logMeIn僅創建一個用戶,而不是簽名。 –