NodeJS用户授权获取特定数据

时间:2018-04-30 10:57:12

标签: node.js express mongoose

我正在开发一个网络应用,每个用户都应该看到自己的类别。因此,如果我以user1身份登录,则应显示user1自己的类别,如果我以user2身份登录,则应仅显示user2的类别。

现在,无论我登录哪个用户,它都会显示所有类别。 我正在使用expressjs和mongoose。

现在这就是我获取类别的方式:

app.js

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

 });

categories.js

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

UserSchema.plugin(passportLocalMongoose);

user.js的

descriptions <- var_label(data_raw) %>% 
  as_tibble() %>% 
  gather(key = variable, value = description)

2 个答案:

答案 0 :(得分:0)

使用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 });
    }
  });
});

答案 1 :(得分:0)

我不确定赛义德的方法是否有效,因为我们只是加载/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 });
        }                 
    });
});