Meteor.userId (). Имя пользователя «неопределено», когда пользователь вошел в систему

1

Итак, у меня есть зарегистрированный пользователь (я) в своем приложении. Я знаю, что я вошел в систему, потому что мое имя пользователя отображается на странице. Однако в моем Javascript я не могу получить свое имя пользователя, назначенное переменной.

В файле main.js содержится следующее:

var uniqueID = Meteor.userId();
var username = uniqueID.username;
console.log("uniqueID = "+uniqueID);
console.log("username = "+username); 

Журнал консоли показывает:

uniqueID = XGX8Qas2ZLCwNYxTH
username = undefined

Я пробовал следующую строку в файле js на основе сообщения с аналогичной проблемой:

var username2 = Meteor.users.findOne({ _id: Meteor.userId() }).username

Это вызвало прямую ошибку (Uncaught TypeError: Невозможно прочитать имя пользователя "undefined")

Теперь, в консоли браузера, если я добавлю:

Meteor.users.findOne({ _id : "XGX8Qas2ZLCwNYxTH" })

Я получаю ожидаемый ответ: {_id: "XGX8Qas2ZLCwNYxTH", имя пользователя: "welehman"}

Поэтому я полностью потеряю, как вставить имя пользователя. У меня на самом деле было это раньше, но теперь, когда я действительно нуждаюсь в этом, он, конечно, внезапно не работает.

Теги:
meteor

1 ответ

0
Лучший ответ

Здесь вы хотите указать всю запись пользователя, а не только идентификатор:

var uniqueID = Meteor.user(); // Not Meteor.userId()
var username = uniqueID.username; // This will work then

Затем также быстро измените переменную uniqueID на более подходящее имя, так как теперь он содержит всего пользователя не только идентификатор.

  • 0
    С этим кодом (точно скопированным) я получаю ошибку «Uncaught TypeError: Невозможно прочитать свойство 'username' of undefined" в строке, где определена переменная "username". Делая некоторые быстрые изменения, я замечаю, что Meteor.user () на самом деле «не определен», и поэтому (новая) переменная «имя пользователя» также не определена. Как ни странно, Meteor.userId () по-прежнему создает эту огромную строку.
  • 0
    Я полагаю, вы пытаетесь привлечь пользователя на стороне клиента, верно? В этом случае это зависит от того, когда пользовательские данные будут опубликованы. Это реактивная конструкция, которая означает, что пользователь будет в конечном итоге распространяться с сервера на клиент. Что вы можете сделать, это назначить Meteor.user () переменной в блоке Tracker.autorun, и тогда переменная будет содержать весь пользовательский объект, и с этого момента вы будете делать то, что вам нужно с этими данными. Tracker.autorun(() => { let user = Meteor.user() ... }
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню