如何使用Angular Controller从Mongo数据库中获取数据

时间:2016-04-06 15:36:39

标签: javascript html angularjs node.js mongodb

我正在尝试使用控制器根据用户修改页面。

我正在使用它:

$http.get('/someUrl').then(function(response){
      $scope.firstname = response.data;
});

我要做的是,从我的数据库中获取每个字段并相应地使用它们。

如果这是我的架构,我已经有一个人存储在数据库中:

var personSchema = new mongoose.Schema({
    firstname: {type: String, required: true, },
    lastname: {type: String, required: true}
});
var person = mongoose.model('People', personSchema);
module.exports = person;

我将在'/ someUrl'中使用哪个网址来获取当前登录的人的名字?

另外,我是否缺少执行此操作所需的任何功能?

修改 我的路线

router.post("/update-profile", function(req, res) {
    if (!req.session.user) {
        return res.status(401).send();
    }
    var firstname = req.body.firstname;
    var lastname = req.body.lastname;

    var newProfile = new UserProfile();
    newProfile.firstname = firstname;
    newProfile.lastname = lastname;

    console.log(newProfile);

    newProfile.save(function(err, savedProfile) {
        if (err) {
            console.log(err);
            return res.status(500).send();
        } else {
            res.render("profile");
            return res.status(200).send();
        }
    });
});

2 个答案:

答案 0 :(得分:0)

从网址获取人物对象。

$http.get('/user?id=5').then(function(response){
  $scope.user = response.data;
});

其中id是用户ID。

然后在您的HTML中,您可以使用{{user.firstName}}

您还可以在加载时将req.user传递到页面,这样您就不需要再进行另一次访问。

res.render('page',{user:req.user});

然后(在ejs中)

$scope.user = <%=user%>;

答案 1 :(得分:0)

我的感觉是,您应该有一个终结点/api/users/:id,它应该期望_id作为请求参数。

所以你的获取请求就像:

$http.get('/someUrl/' + current_logged_in_user_id).then(function(response){
  $scope.firstname = response.data;
});

您的后端代码将类似于:

app.get('/someUrl/:id', function(req, res){
    User.findById(req.params.id, function (err, user) {
        if(user) res.json(user.firstName);
    });
});

现在根据您提供的信息,我能告诉您最好的信息。您可以使用DaftMonk's Angular Fullstack Generator。它为您创建整个身份验证Boilerplate。它会根据session_id自动获取用户详细信息,并将user添加到req.user。因此,在请求处理程序中,您可以使用req.user

简单地获取请求用户的详细信息