Mean.js angularjs查询mongodb数据库

时间:2015-02-12 23:59:31

标签: angularjs mongodb mean

我知道这是一个愚蠢的问题,但我错过了一些东西而且我迷路了。

我使用'yo meanjs'创建了一个新项目,从而创建了标准的脚手架。

从应用程序的公共方面,我试图搜索用户的用户不是基于他们的ID而是他们的电子邮件地址。

我需要使用Users.get或Users.query编写查询,但我找不到如何执行此操作的示例。我是否必须在应用程序端创建新的控制器/路由?

在公众方面,我尝试过许多不同的事情:

var user = Users.query({
    email: 'bob@this.com'
});

我现在似乎无法通过美丽的树木看到森林。

谢谢!

2 个答案:

答案 0 :(得分:2)

我猜答案有点复杂。这是有效的,尽管可能有更好的方法。

我必须在其中一个app用户控制器中创建一个新功能:

exports.userByEmail = function(req, res, next, email) {
  console.log('userByEmail ' + email);
  User.findOne({
    email: email
  }).exec(function(err, user) {
    if (err) return next(err);
    if (!user) return next(new Error('Failed to load User with email ' + email));
    res.json(user);
    next();
  });
};

接下来,我必须创建一条新路线:

app.route('/users/email/:emailAddr').get(users.me);
app.param('emailAddr', users.userByEmail);

然后我用$ htttp.get调用它:

$http.get('/users/email/' + newEmail).
    success(function(data, status, headers, config) {
        // do something useful with data
    }).
    error(function(data, status, headers, config) {
      $scope.error = 'Problem finding a user with that email';
    });

问题源于我无法使用现有的CRUD调用之一来发送查询json对象。

答案 1 :(得分:0)

您可以使用findOne()。

User.findOne({email: req.body.email}, function(err, user){
   //...
   callback(err);
});