MEAN.js:获取MongoDB中存储的用户数

时间:2015-12-07 21:44:41

标签: angularjs node.js mongodb express meanjs

我只是尝试使用MEAN.js向MongoDB提交查询。我想获得Mongo中存储的用户数量。 (已注册的所有用户的数量)。

我正在处理由学生编写的MEAN.js网站的大量混乱,该网站由数千个.js文件组成。我发现两个文件可能有关:

应用程序/控制器/用户/ users.authentication.server.controller.js

其中包含exports.signup = function(req, res) {...}exports.signin = function(req, res, next) {...}等功能。

我补充说:

exports.userCount = function(req, res) {
    // use mongoose to get the count of Users in the database
    User.count(function(err, count) {

        // if there is an error retrieving, send the error. nothing after res.send(err) will execute
        if (err)
            res.send(err)

        res.json(count); // return return the count in JSON format
    });
}

问题是,假设该功能甚至有效。和bby工作我的意思是返回' User' MongoDB中的记录,目前尚不清楚如何调用它。理想情况下,我想将它称为前端表面的50个文件。

还有另一个文件, public / modules / users / controllers / authentication.client.controller.js

此文件实际上是在前端迭代,可以在firefox或chrome中调试。

它具有$scope.signup = function() {...}$scope.signin = function() {...}个功能。

我想阻止显示登录页面,或显示备用消息,具体取决于MongoDB中的用户记录数。

目前的问题是我无法在authentication.client.controller.js中获取计数,因为它不知道'用户'是。另一个问题是我不知道如何调用我在另一个文件中创建的函数exports.userCount,从前端或者来自authentication.client.controller.js。

1 个答案:

答案 0 :(得分:1)

不要将服务器控制器误认为是角度控制器。

在服务器控制器中,您应该有一个返回计数的函数,就像您说exports.userCount = function(req, res) {};一样。但是,如果要调用该函数(API样式),则必须在用户路径文件中定义路径:

app.route('/my-route-that-retrieves-user-count').get(user.userCount);`

对路由/my-route-that-retrieves-user-count发出GET请求后,系统会调用您的userCount函数。

在angularjs方面,您可以在Authentication控制器中制作GET请求(改编自angularjs docs):

$http({
    method: 'GET',
    url: '/my-route-that-retrieves-user-count'
}).then(function successCallback(response) {
    // this callback will be called asynchronously
    // when the response is available
    // response will be the count of users
    // you can assign that value to a scope and
    // act accordingly to its value
}, function errorCallback(response) {
    // called asynchronously if an error occurs
    // or server returns response with an error status.
});