2015-04-22 62 views
0

我有一個REST API和一個MEAN應用程序。用戶可以使用他們的電子郵件地址登錄到我的應用程序,然後使用html表單將項目寫入數據庫。
我想要達到的是:當用戶已經寫了一個項目到數據庫中,html表單應該填充數據中的數據。想要的數組應該由用戶電子郵件地址標識。REST&MEAN堆棧:用保存的數據填充表單

所以這裏we've了我的HTML表單:

<div class="form-group"> 
    <label for="author">Author</label> 
    <input type="text" class="form-control" name="author" id="email" value="<%= user.local.email %>" readonly ng-value="email"> 
</div> 

<div class="form-group"> 
    <label for="name">Projektname</label> 
    <input type="text" class="form-control" name="name" ng-value="name"> 
</div> 

<div class="form-group"> 
    <label for="description">Beschreibung</label> 
    <input type="text" class="form-control" name="description" ng-value="description"> 
</div> 

<div class="form-group"> 
    <label for="tags">Tags</label> 
    <input type="text" class="form-control" name="tags" ng-value="tags"> 
</div> 

我的貓鼬架構:

var mongoose = require ('mongoose'); 

var projectSchema = mongoose.Schema({ 
     author  : String, 
     name  : String, 
     description : String, 
     tags  : String, 
     media  : {data: Buffer, contentType: String}, 
     updated_at : {type: Date, default: Date.now }, 
     active  : Boolean 
}); 

我的路線:

//GET /projects/:id 
    app.get('/projects_view/:id', function (req, res, next) { 
     Project.findById(req.params.id, function (err, project) { 
      if (err) return next (err); 
      res.json(project); 
     }); 
    }); 

    //PUT /projects/:id 
    app.put('/projects_view/:id', function (req, res, next) { 
     Project.findByIdAndUpdate(req.params.id, req.body, function (err, post) { 
      if (err) return next (err); 
      res.json(post); 
     }); 
    }); 

我的方法來解決:

<script> 
    var app = angular.module('myApp', []); 
    app.controller("formController", ['$scope', '$http', '$filter', function($scope, $http, $filter){ 
     $http.get('/projects_view/'). 
     then(function(res){ 
      var allProjects = res.data; 
      var singleProject = $filter('filter')(allProjects, function(d){ 
       return d.author === email; 
       }); 
      }; 
     }); 
    }]); 
</script> 

我正在嘗試它與$find,但它似乎並沒有爲我工作。 有沒有人知道我能做到這一點?來自德國

親切的問候,
大衛

+0

更具體一點:我的目標是做貓鼬查詢,找到我的項目由一個特定的電子郵件地址寫的。地址必須從視圖傳遞到路由器。如果該電子郵件地址有一個數據庫條目,則我的回覆應該在視圖的HTML表單中拋出 –

回答

0

下面是做到這一點的方式。

mongoose = require('mongoose'); 
var Project= mongoose.model('Project'); 
app.post('/projects_view', function(req, res, next) { 
    var project_post = new Project(req.body); 
    Project.findOne({ email:project_post.email}, function (err, doc){ 
    // doc is a Document 
    if (err) { return next(err); } 
    if (!doc) { return next(new Error('can\'t find')); } 

    console.log(doc); // log the post in console 
    res.json(doc); 
}); 
}); 

希望這有助於。

+0

謝謝,但我只想獲取一個由電子郵件地址標識的數據記錄。比這個記錄應該是表單字段的值。用戶可以通過這種方式看到他已經發布了一個項目,並且可以在表單域中對其進行更新。 –

+0

@DavidNnamremmiz嘗試上面的代碼,我用相同的代碼來搜索我的mongodb中的帖子。 – Kamran

+0

感謝您的努力,問題:我想要進行查詢,每次用戶在其個人資料頁面上時,而不僅僅是在他發佈內容時。所以如果我沒有弄錯,我必須將角度控制器中的郵件地址傳遞給GET路由,所以mongo給我預期的數據。 –