Публикация пользователю, если он вошел в систему

Я пишу проект meteor-angular2 с пакетом учетных записей-паролей.

Я пытаюсь выяснить, вошел ли пользователь в систему и опубликовал ли он контент.

это мой машинописный код:

import {Meteor} from 'meteor/meteor';
import {RoomsCollection} from "../collections/rooms";

Meteor.publish('rooms',()=>{
    if (!this.userId) {
        return null;
    } else {
        return RoomsCollection.find();
    }
});

как вы видите, я использую this.userId но похоже что this не определено

это ошибка:

TypeError: Cannot read property 'userId' of undefined

Я не совсем понимаю, как анонимная функция может иметь this.userIdЯ на самом деле читаю книгу "Ты первое приложение метеора" с 2014 года. Так что, может быть, они где-то ломают перемены... или я что-то упускаю.

Я новичок в Метеоре, поэтому любая информация по этому вопросу будет принята с благодарностью.

1 ответ

Решение

В вашем коде у вас есть:

()=>{
    if (!this.userId) {

Не используйте функцию стрелки, если хотите this быть управляемым вызывающим абонентом! Вместо этого сделайте:

function() {
    if (!this.userId) {

Больше

https://basarat.gitbooks.io/typescript/content/docs/arrow-functions.html

Другие вопросы по тегам