#meteor #userid
#meteor #идентификатор пользователя
Вопрос:
У меня есть короткий фрагмент кода, например, для обновления имени в профиле моего пользователя:
Meteor.users.update({_id: Meteor.userId()}, {$set:{"profile.name": name}});
Когда я работаю локально, я могу использовать Meteor.userId
или Meteor.userId()
без проблем. Однако при развертывании в Modulus я сталкиваюсь с проблемами. Если у меня нет оператора на нем, он будет выполнять начальный $set , но не более. Если я использую операторы, он ведет себя так, как я и ожидал.
Почему это? Я предполагаю, что я не должен был использовать это без оператора для начала, но есть ли причина, по которой это вообще сработало?
Комментарии:
1. Meteor.userId() и Meteor.userId не могут быть одинаковыми. Meteor.userId возвращает функцию Meteor.userId() возвращает строку. я думаю, вы говорите об this.userId, который доступен только внутри публикаций и Meteor.methods.
2. Нет, как ни странно, я использовал Meteor.userId на стороне сервера, а не в публикации.
3. Вероятно, вы устанавливаете _id в строковое представление
Meteor.userId
функции. Что-то вроде"function() { ... }"
. Который успешно установит значение, но это не то, что вы хотите. Можете ли вы открыть консоль mongo и просмотреть несколько документов, чтобы увидеть, как выглядят поля _id?meteor mongo
из CL4.@пахан, просто для ясности, вы пишете, что Meteor.userId возвращает неправильную функцию. Функции возвращают значения (возможно), в то время как
Meteor.userId
сохраняет (является) функцией.
Ответ №1:
Посмотрите в документации
-
Функция
Meteor.userId()
доступна «Где угодно, кроме функций публикации» -
Переменная
this.userId
доступна «Где угодно» (которая явно также вызывается для функции публикации на стороне сервера).
Ответ №2:
У меня была такая же проблема с Meteor.userId() при попытке заставить модульное тестирование с mocha работать.
Простое исправление — перейти к tasks.js
и заменить Meteor.userId()
на this.userId
что — использовать this
контекст функции.