Meteor.userId против Meteor.userId()

У меня есть короткий фрагмент кода, например, для обновления имени в моем профиле пользователя:

Meteor.users.update({_id: Meteor.userId()}, {$set:{"profile.name": name}});

Когда я работаю локально, я могу без проблем использовать Meteor.userId или Meteor.userId(). Однако при развертывании в Modulus у меня возникают проблемы. Если у меня нет оператора, он выполнит начальный $set, но не более того. Если я использую операторы, он ведет себя так, как я ожидал.

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


person Itinerati    schedule 20.06.2014    source источник
comment
Meteor.userId() и Meteor.userId не могут совпадать. Meteor.userId возвращает функцию Meteor.userId() возвращает строку. я думаю, вы говорите об this.userId, который доступен только внутри публикаций и Meteor.methods.   -  person pahan    schedule 20.06.2014
comment
Нет, как ни странно, я использовал Meteor.userId на стороне сервера, а не в публикации.   -  person Itinerati    schedule 20.06.2014
comment
Вероятно, вы устанавливаете _id в строковое представление функции Meteor.userId. Что-то вроде "function() { ... }". Который успешно установит значение, но это не то, что вам нужно. Можете ли вы открыть консоль mongo и просмотреть несколько документов, чтобы увидеть, как выглядят поля _id? meteor mongo из КЛ   -  person colllin    schedule 20.06.2014
comment
@pahan, просто для ясности, вы пишете Meteor.userId возвращает функцию, что неверно. Функции возвращают значения (возможно), а Meteor.userId хранит (является) функцией.   -  person Peppe L-G    schedule 03.03.2015


Ответы (2)


Ознакомьтесь с документацией.

  • Функция Meteor.userId() доступна "Где угодно, кроме публикации функций"

  • Переменная this.userId доступна «где угодно» (которая явно также вызывается для функции публикации на стороне сервера).

person Soren    schedule 03.03.2015

У меня была такая же проблема с Meteor.userId() при попытке заставить работать модульное тестирование с мокко.

Простое исправление состоит в том, чтобы перейти к tasks.js и заменить Meteor.userId() на this.userId, чтобы использовать контекст this функции.

person Pristine Kallio    schedule 20.09.2017