【问题标题】:REST & MEAN Stack: Filling a Form with saved dataREST & MEAN Stack:用保存的数据填写表格
【发布时间】:2015-04-23 02:10:54
【问题描述】:

我有一个 REST API 和一个 MEAN 应用程序。用户可以使用他们的电子邮件地址登录我的应用程序,然后使用 html 表单将项目写入数据库。
我想要实现的是:当用户编写项目时到数据库,html表单应该填充我数据库中的数据。想要的数组应该由用户的电子邮件地址标识。

所以我们得到了我的 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>

我的 Mongoose 架构:

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,但它似乎对我不起作用。 有人知道我如何实现这一目标吗?

来自德国的亲切问候,
大卫

【问题讨论】:

  • 更具体地说:我的目标是进行猫鼬查询,找到由特定电子邮件地址编写的项目。地址必须从视图传递到路由器。如果该电子邮件地址有数据库条目,我的回复应该以视图的 html 形式抛出

标签: angularjs node.js rest mean-stack


【解决方案1】:

这是执行此操作的方法。

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);
});
 });

希望这会有所帮助。

【讨论】:

  • 谢谢,但我只想获取一条数据记录,由电子邮件地址标识。比这条记录应该是表单字段的值。这样用户就可以看到,他已经发布了一个项目,并且可以在表单字段中更新它。
  • @DavidNnamremmiz 试试上面的代码,我用同样的代码在我的 mongodb 中搜索帖子。
  • 感谢您的努力,问题:我想在用户每次访问其个人资料页面时进行查询,而不仅仅是在他发布内容时。所以如果我做对了,我必须将角度控制器中的邮件地址传递给 GET 路由,所以 mongo 给了我预期的数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-11
  • 1970-01-01
  • 2015-11-08
  • 2022-10-15
  • 2011-04-02
  • 2017-07-24
相关资源
最近更新 更多