使用Node Express和MongoDB保存Angular表单数据

时间:2014-03-28 22:34:01

标签: node.js angularjs mongodb express

我是MEAN堆栈的新手,我显然遗漏了一些东西。我试图保存一个字符名称,并且我将空白对象保存到数据库中。

partialaddchar.jade

div(class="col-xs-4")
                input(type="text", class="form-control input-sm", name="pcname", placeholder="character name", ng-model="form.pcname", required autofocus)
                span(class="help-block") Character Name
                input(class="btn", type="submit", ng-click="addChar()") Go

controllers.js

    function AddCharCtrl($scope, $http, $location) {
  //$scope.form = {pcname: ''};
  $scope.form = {};
  $scope.addChar = function () {
    $http.post('/api/addChar', $scope.form).
      success(function(data) {
        $location.path('/');
      });
  };
}

api.js

exports.addChar = function (req, res) {
  var newCharacter = new Character(req.body);
  newCharacter.save();
  console.log("character added: " + req.body);
  res.json(req.body);
};

控制台返回"添加的字符:[object Object]

POST / api / addChar

然后成功重定向到字符列表,打印了多次,因为我点击了保存(因为我显然已经保存了一个空对象)。

partiallistchar.jade

div(ng-repeat='charnode in chardata')
            a(href='/readCharacter/{{charnode._id}}') {{charnode.character + " Level " + charnode.level + " " + charnode.class}}

我将这种方法基于教程和种子,并且浏览stackoverflow似乎每个人都这样做有点不同并且尝试解决方案需要重写。我是一个顺从者,所以如果有一个明确的最佳实践并且我的方法已经结束,我将非常感谢您的反馈。

感谢。

编辑 - 我正在使用Mongoose。我还能通过专门引用req.body.pcname来使它工作。我的印象是这不是必需的,特别是考虑到返回的数据是pcname:value的形式。如果没有参考每个表单字段,我都会对如何完成此任何评论表示感谢。

exports.addChar = function (req, res) {
  var newCharacter = new Character({
    pcname: req.body.pcname});
  newCharacter.save();
  console.log(JSON.stringify(req.body));
  console.log("character added: " + JSON.stringify(req.body.pcname));
  res.json(req.body);
};

0 个答案:

没有答案