【问题标题】:Mean.js angularjs querying the mongodb databaseMean.js angularjs 查询 mongodb 数据库
【发布时间】:2015-04-13 22:34:29
【问题描述】:

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

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

从应用程序的公共方面,我尝试根据用户的 ID 而非电子邮件地址来搜索用户。

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

在公共方面,我尝试了许多不同的方法,例如:

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

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

谢谢!

【问题讨论】:

    标签: angularjs mongodb mean


    【解决方案1】:

    我想答案有点复杂。这是有效的,尽管可能有更好的方法来做到这一点。

    我必须在其中一个应用用户控制器中创建一个新函数:

    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 对象。

    【讨论】:

      【解决方案2】:

      你可以使用 findOne()。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-28
        • 2022-01-15
        • 1970-01-01
        • 1970-01-01
        • 2011-11-15
        • 1970-01-01
        • 2020-04-30
        • 2016-04-07
        相关资源
        最近更新 更多