Ответ 1
Существует четыре возможности:
-
Пользователь не зарегистрирован.
-
Вы вызываете метод с сервера, и, таким образом, не будет пользователя, связанного с вызовом (если вы не вызываете его из другой функции, которая будет привязана пользователем к своей среде, например, другой метод или функция подписки).
-
У вас даже не установлен пакет учетных записей (или любой из надстроек). Я только включаю это для полноты.
-
В ES6 используется функция стрелок.
Meteor.publish('invoices', function() { return invoices.find({by: this.userId}); });
будет работать нормально, аMeteor.publish('invoices', () => { return invoices.find({by: this.userId}); });
вернет пустой курсор, потому чтоthis
не будет иметь свойстваuserId
. Это происходит потому, что функция стрелки не связывает собственныеthis
,arguments
,super
илиnew.target
.
Если это определенно не (2), что происходит, когда вы регистрируете Meteor.userId()
непосредственно перед тем, как сделать вызов метода на клиенте?