2015-12-07 3 views
1

Я просто пытаюсь отправить запрос MongoDB с помощью MEAN.js. Я хочу получить количество пользователей, хранящихся в Mongo. (количество всех зарегистрированных пользователей).MEAN.js: Получить количество пользователей, хранящихся в MongoDB

Я работаю с гигантским беспорядком на сайте 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 файлов к поверхности на передней панели.

Существует еще один файл, общественные/модули/пользователи/Контроллеры/authentication.client.controller.js

Этот файл фактически итерация на переднем конце, и могут быть отлажены в Firefox или хром.

У него есть $scope.signup = function() {...} и $scope.signin = function() {...} функции.

Я хочу запретить отображение страницы с подписью или отобразить альтернативное сообщение в зависимости от количества записей пользователя в MongoDB.

Текущая проблема заключается в том, что я не могу получить счет в файле authentication.client.controller.js, потому что он не знает, что такое «Пользователь». Другая проблема заключается в том, что я не знаю, как вызвать функцию exports.userCount, которую я создал в другом файле, из front-end или из authentication.client.controller.js.

ответ

1

Не принимайте серверные контроллеры с угловыми контроллерами.

В серверных контроллерах у вас должна быть функция, которая возвращает счет, как вы сказали exports.userCount = function(req, res) {};. Однако, если вы хотите вызвать эту функцию (стиль API), вы должны определить маршрут в файле маршрута пользователя:

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

После того, как запрос GET сделан на маршрут /my-route-that-retrieves-user-count, ваша userCount функция будет вызываться.

В angularjs стороны вы можете сделать запрос GET, как (адаптировано из angularjs документов) из вашего Authentication контроллера:

$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. 
}); 
Смежные вопросы