2015-07-18 3 views
0

Как говорится в этом вопросе, мне нужно создать конкретный маршрут для каждого пользователя, который у меня есть. В моем случае работодатели. Теперь все примеры в Интернете связаны с коллекцией USERS.Маршрутизация к определенному профилю пользователя с использованием железного маршрутизатора (METEOR)

В моем случае я хочу добраться до: "/employer/:_id", но у меня есть Employer ID в Collection Employers. Поэтому в основном я должен получить Employer ID через ключ от User ID

Im любопытное застрял на возврате значения идентификатора работодателя на маршрут ...

METHODS.js

getEmployerId: function(currentuser){ 
    employerId = Employer.find({"user":currentuser}).fetch(); 
    return employerId; 
} 

ROUTER.js

Router.route("/employer/:_id", { 
    name:"employer", 
    template:"employer", 
    layoutTemplate:'employerLayout', 
    data: function(){ 
     var currentuser = Meteor.userId(); 
     Meteor.call("getEmployerId", currentuser, function(error, result){ 
     if(error){ 
      console.log("error", error); 
     } 
     if(result){ 
      return true; // I belive here is where I have to pass it up to the ROUTE 
     } 
     }); 

    }, 
    onBeforeAction:function(){ 

     var user = Meteor.userId(); 
     if(!user || !Roles.userIsInRole(user, ['employer'])) { 
      Router.go("verification"); 
     }else { 
      this.next(); 
     } 
     return true; 

    }, 

}); 

И это, как моя коллекция работодателя выглядит следующим образом:

meteor:PRIMARY> db.employer.find().pretty() 
{ 
    "_id" : "qCFGZa4ogc5LR56PL", // I need this for the route 
    "createdAt" : ISODate("2015-07-18T13:19:16.098Z"), 
    "user" : "owfJ4ozrfsp26o8G4" // the key through which i can return the ID, got it from the user session? 
} 

У кого-нибудь есть предложение, как это сделать? И это хороший подход для каждого пользователя (работодателя)? Любой учебник, пример или что-либо, описывающее приложение с профилями пользователей, будет много апробирован!

+0

ли вам действительно нужен идентификатор сотрудника? Вы можете найти сотрудника, используя идентификатор пользователя – mwarren

+0

Да, я хочу идентификатор работодателя, так как будет намного больше информации о работодателе. Это имеет больше смысла для меня. И да, я нахожу идентификатор, но не знаю, как передать его обратно на маршрут? – klanc

+0

Хорошо, я думаю, у вас есть шаблон со списком работодателей, и вы хотите нажать на работодателя, чтобы получить дополнительную информацию или подобное? – mwarren

ответ

0

Хорошо, похоже, что вы почти у цели.

Я не думаю, что вы хотите параметр :: id. Вы отправляете пользователя просто /employer, где он делает вход, поэтому у вас есть его идентификатор пользователя.

Затем измените getEmployerId на getEmployer: другими словами, получите всю запись работодателя.

getEmployer: function(currentuser){ 
    return Employer.find({"user":currentuser}).fetch(); 
} 

Затем в data: функции маршрутизатора вместо возвращения true вы возвращаете запись вы найдете. Таким образом, запись доступна для шаблона (это то, что функция data для)

data: function(){ 
    var currentuser = Meteor.userId(); 
    Meteor.call("getEmployer", currentuser, function(error, result){ 
    if(error){ 
     console.log("error", error); 
    } 
    if(result){ 
     return result; 
    } 
    }); 

}, 
+0

Эй, спасибо за информацию о поиске! Но как я могу сказать его «ссылку». Я получаю данные, это прекрасно, и теперь просто хотел бы передать его «идентификатор работодателя» в качестве ссылки полного профиля: и т.д. localhost: 300/работодатель/1000000 – klanc

+0

Ну, я хочу сказать, что я не думаю, что вам нужно перенаправить его где угодно. Но тогда, может быть, я не совсем понял тебя. Как я вижу, пользователь называет маршрут/работодатель (параметр :: id не нужен), и этот маршрут/работодатель отображает шаблон «работодателя», показывающий запись работодателя. Маршрутизатор поставляет запись работодателя в шаблон в функции «данные:». Не нужно перенаправлять пользователя в любом месте, не нужно указывать идентификатор работодателя на маршрут. – mwarren

+0

Но на более поздних этапах, когда у меня будет раздел «public proflie», я хотел бы иметь возможность ссылаться на конкретного пользователя через его «ссылку на работодателя, как указано выше». Это просто то, что, по-моему, я могу использовать во всем приложении (так как у меня будет раздел сотрудника), поэтому я хотел бы как-то реализовать его. Извините за беспокойство! :) – klanc