NodeJS авторизация пользователя получить конкретные данные - PullRequest
0 голосов
/ 30 апреля 2018

Я работаю над веб-приложением, где каждый пользователь должен видеть свои категории. Поэтому, если я захожу как user1, он должен показывать собственные категории пользователя user1, а если я захожу как user2, он должен показывать только категории пользователя user2.

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

сейчас вот как я получаю свои категории:

app.js

app.get("/category", function(req, res) {
  Category.find(function(err, foundCategories) {
    if (err) {
      res.redirect("/panel-admin");
    } else {
      res.render("category", { Categories: foundCategories });
    }
  });
});

categories.js

// MONGOOSE/MODEL CONFIG
 var categorySchema = new mongoose.Schema({
     title: String,
     image: String,
     shop: {
         id: {
             type: mongoose.Schema.Types.ObjectId,
             ref: "User"
         },
         username: String
     }

 });

user.js

// MONGOOSE/MODEL CONFIG
var UserSchema = new mongoose.Schema({
    username: String,
    password: String,
});

UserSchema.plugin(passportLocalMongoose);

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Я не уверен, что подход Саида сработает, так как мы просто загружаем /categories вместо /categories/:id, поэтому в req.params.id.

не будет никакой информации.

У меня есть нечто очень похожее в моем приложении, которое использует req.user._id, которое затем можно использовать для поиска всех категорий с shop.id, равным этому пользователю.

Я немного изменил свой код, чтобы использовать ваши ссылки:

router.get("/category", middlewareObj.isLoggedIn, function(req,res) {
    Category.find({"shop.id": req.user._id},function(err,allCats){       //Only find categories linked to current user
        if (err) {
          res.redirect("/panel-admin");
        } else {
          res.render("category", { Categories: allCats });
        }                 
    });
});
0 голосов
/ 30 апреля 2018

Используйте функцию findOne и передайте ей переменную, которая указана каждому пользователю. например, я передал это id, что достигнуто от req объекта.

app.get("/category", function(req, res) {
  // var id = get id or other specific key from req
  Category.findOne({_id: id}, function(err, foundCategories) {
    if (err) {
      res.redirect("/panel-admin");
    } else {
      res.render("category", { Categories: foundCategories });
    }
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...