根据用于身份验证的电子邮件ID,在MEAN堆栈Web应用程序中从mongodb中检索数据

时间:2017-03-06 16:45:58

标签: angularjs node.js mongodb express mongoose

我在根据验证时使用的电子邮件ID从mongodb检索数据时遇到问题。我正在创建一个简单的Web应用程序,用户可以在其中捐赠书籍。

用户必须首先使用电子邮件和密码凭据登录该应用程序。 当用户捐赠书籍时,数据会存储在名为“书籍”的表格中。在mongodb中以下列方式(angularjs):

    Description of book: 
      <form id="myForm" name="myForm" action="" method="">
        <table class="responstable">
        <tr><td>Book's name:</td>
        <td><input type="text" ng-model="don.donor"/></td></tr>

        <tr><td>Donor's phone number:</td>
        <td><input type="text" ng-model="don.phone" /></td></tr>

        <tr><td>Your email_id</td>
        <td ng-init="des.email = '<%= user.local.email %>'">{{don.email}}</td></tr>

        </table><br>
        <center><input id="check" name="check"type="submit" value="Donate" ng-click="donate();"/></center>
      </form>

每次捐赠图书时,都会存储用户的电子邮件ID。

这是server.js文件中的代码:

    var dbdes= mongojs('books' , ['books']);

    app.post('/books', function(req, res){
        console.log(req.body);
        dbdes.books.insert(req.body, function(err, doc){
            res.json(doc);
        })
    });

这是controller.js文件中的代码:

    $scope.donate = function(event){
        console.log($scope.don);
        event.preventDefault();
        $http.post('/books', $scope.don).success(function(response){
            console.log(response);
        });
    };

该应用有另一个标签历史记录。在点击历史记录时,用户必须能够查看他捐赠的所有书籍的详细信息。

历史记录按钮:

<a ng-click=" gethistory('<%= user.local.email %>');" ></span><span class="r">History</a>

我使用下表来执行此操作:

    <table> 
        <tr>    <td>Name of the book:</td>  </tr>                               
        <tr ng-repeat="y in books">
        <td>{{y.name}}</td> </tr>
    </table>

以下代码正确提取电子邮件(控制台显示:GET /books/srinidhiraichur1234@gmail.com 304 14ms),但条目未显示在网页上。我应该对服务器和控制器文件进行哪些更改,以便检索用户的个人捐赠。

server.js:

app.get('/books', function (req , res){

dbdes.books.find(function(err,docs){
    console.log(docs);
    res.json(docs);
});

});

controller.js:

    $scope.gethistory = function(email){
    console.log(email);

    $http.get('/books/' + email).success(function(response){
        //this line is printing. but i cant see the details on the web page
        console.log("i got the data requested - history");
        $scope.books = response;
        $scope.y = "";
    })
};

1 个答案:

答案 0 :(得分:0)

您需要更新您的入门书功能

app.get('/books/:email', function (req , res){
  var email = req.params.email;
  dbdes.books.find({
    "email": email
  }, function(err,docs){
    console.log(docs);
    res.json(docs);
  });
});