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

How do I use Angular Controller to get data from Mongo database

本文关键字:数据库 获取 数据 Mongo 何使用 Angular Controller      更新时间:2024-01-25

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

我使用的是:

$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"中使用哪个URL来获取当前登录人员的名字?

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

编辑:我的路线

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();
        }
    });
});

从url中获取一个person对象。

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

其中id是用户id。

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

您还可以在页面加载时将req.user传递给该页面,这样您就不需要再执行另一个get。

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

然后(在ejs中)

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

我的感觉是,您应该有一个端点/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的Angular Fullstack生成器。它为您创建了整个身份验证Boilerplate。它根据session_id自动获取用户详细信息,并将user添加到req.user中。因此,在请求处理程序中,您可以通过使用req.user 来简单地获取请求用户的详细信息