【问题标题】:How do I use Angular Controller to get data from Mongo database如何使用 Angular Controller 从 Mongo 数据库中获取数据
【发布时间】:2016-07-27 03:12:21
【问题描述】:

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

我正在使用这个:

$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 并从 mongo 中拉回第一个名称。需要有一个 person 路由,然后它将查询您的 mongodb 中的人并返回您想要的任何信息。见meanjs.org
  • 是的。一切都在 Node.js 中设置。我有快递、路线、视图、REST api 等。
  • API 是什么样的。理想情况下,应该有一个 API 可以在请求参数中使用用户的 _id,您将使用它来检索有关用户的信息。
  • 那你能显示你的路线吗?此外,当有人登录时,您将必须获取有关该用户的一些信息,希望是一个 ID。然后,您可以获取该 ID,在 People 集合中查询该 ID 并返回该个人。这样,一切都在同一个登录调用中完成
  • 在我的路线中。我有一个创建和保存此人的发布请求。它被称为新人。如何访问该会话的“newPerson”?

标签: javascript html angularjs node.js mongodb


【解决方案1】:

我的感觉是,您应该有一个端点 /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。它为您创建了整个 Authentication Boilerplate。它会根据session_id自动获取用户详细信息,并将user添加到req.user。所以在请求处理程序中,您可以简单地使用req.user获取请求用户的详细信息

【讨论】:

    【解决方案2】:

    从 url 中获取 person 对象。

    $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%>;
    

    【讨论】:

    • '/user?id=5' 中的 '/user' 来自哪里?
    • 只是一个示例网址。可以是任何返回用户的东西
    猜你喜欢
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 2019-11-11
    • 2019-05-10
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多