angularjs和grails 2.5.0保存成功,没有错误但没有保存到数据库

时间:2016-01-10 18:44:36

标签: angularjs database grails h2 angular-resource

我一直在寻找像我一样的类似情况,而且我已经看到这种错误很常见,但我无法找到解决问题的正确方法。我真的很感激任何帮助。

我现在的问题是当我执行它时它会返回HTTP 200并在我的终端上打印一行确认我创建了JSON文件。没有错误,但是当我查看我的数据库时,其中没有任何内容。

到目前为止我已尝试过:

  1. newBook.save(flush:true)

  2. 将我的数据源从create-drop编辑为更新(但是我的整个数据库都消失了,所以我返回了数据。我只需要在演示期间保存它,所以我知道每次应用程序重启时数据都会丢失)

  3. Postman GET和POST

  4. GET:200 OK

    POST:200 OK

    但是当我再次获得时,没有任何显示

    1. 使用console和println进行调试(但由于我刚刚开始学习AngularJS和Grails,可能会有一些我错过的东西)
    2. 我希望这些数据可以提供有关我的问题的详细信息,我对任何问题都持开放态度。

      以下是我的示例代码:

      后端代码:Grails 2.5.0

      域类

      StringBuilder sb = new StringBuilder("----");
      
      sb.setCharAt(1, 'a');
      sb.setCharAt(3, 'a');
      
      String s= sb.toString(); // -a-a
      

      控制器

      class Book {
      
          String name
          int page
          boolean new
      
          static belongsTo = [student: student]
      
          static constraints = {
          }
      }
      

      前端代码:AngularJS

      控制器     app.controller(' Book',function($ scope,store,$ state,bookFactory){

      import grails.converters.JSON
      import org.springframework.security.access.annotation.Secured
      
      @Secured('permitAll')
      
      class BookController {
      
          def index() {
              render Book.list() as JSON
          }
      
          def save() {
              def newBook = new Book(request.JSON)
              newBook.save(flush: true)
              println request.JSON
              render(['success': true] as JSON)
          }
      
          def show() {
              def Book = Book.get(params.id)
      
              render Book as JSON
          }
      }
      

      服务

          $scope.book = {}
          $scope.saveBook = function() {
              $scope.book.assessment = $scope.getBook();
              console.log($scope.book);
              bookFactory.save($scope.book,function (result){
                  console.log(result)
              }, function (error) {
                  console.log(error)
              })
          }
      
          $scope.getBook = function() {
          var result = "";
          if ($scope.book.page > 10){
              result = "many pages";
          }else if ($scope.book.new && $scope.book.page > 20){
              result = "new and many pages";
          }else {
              result = "old book";
          }
          return result;
      };  
      })
      

      app.js

      app.factory('bookFactory', ['$resource', function ($resource) {
          return $resource('api/book',
              {
                  'update': {method: 'PUT'}
              })
      }])
      

      HTML

      .state("book", {
              url: "/book",
              templateUrl: "assets/app/partials/book.html",
              controller: 'Book',
              data: {
                  requiresLogin: true
              }
          })
      

0 个答案:

没有答案