Node.js Can';无法在成功发布到数据库时获取要触发的警报()

Node.js Can';无法在成功发布到数据库时获取要触发的警报(),node.js,postgresql,angular,alert,crud,Node.js,Postgresql,Angular,Alert,Crud,我正在学习如何使用后端,所以请原谅我,如果这是基本的,似乎我错过了一些简单的东西。我正在尝试创建一个简单的CRUD应用程序来学习,所以我选择创建一个博客平台,以后可以将其整合到我的网站中 我正在使用Angular、Node和Express以及PostgreSql 我可以成功地将条目发布到数据库中。当我点击回车键时,我可以在Postco上看到它们。我似乎不知道如何发出警报,通知条目是否成功发布。现在我有一个关于角度服务的警告。成功等等,但我有一种感觉那是错误的。当我在这里搜索答案时,其他人在控制器

我正在学习如何使用后端,所以请原谅我,如果这是基本的,似乎我错过了一些简单的东西。我正在尝试创建一个简单的CRUD应用程序来学习,所以我选择创建一个博客平台,以后可以将其整合到我的网站中

我正在使用Angular、Node和Express以及PostgreSql

我可以成功地将条目发布到数据库中。当我点击回车键时,我可以在Postco上看到它们。我似乎不知道如何发出警报,通知条目是否成功发布。现在我有一个关于角度服务的警告。成功等等,但我有一种感觉那是错误的。当我在这里搜索答案时,其他人在控制器中有它,但我尝试了一下,但没有成功

以下是我的相关代码:

createEntry.html

  <form ng-submit="createBlogEntry(blog)">
  <h2>Title:</h2>
      <input type="title" ng-model="blog.title"></input>
    <br>
  <h3>Author:</h3>
      <input type="author" ng-model="blog.author"></input>
    <br>
  <h3>Photo:</h3>
      <input type="imageUrl" ng-model="blog.imageUrl"></input>
    <br>
  <h3>Content:</h3>
    <textarea type="content" rows="5" cols="50" ng-model="blog.content">
    </textarea>
    <br>
  <button type="submit">Save Entry</button>
  </form>
adminService.js 角度服务:

angular.module("blog").service("adminService", function($http) {
this.createBlogEntry=函数(blog){

index.js 服务器索引(减去不相关的端点)

blogCtrl.js 节点控制器:

var app = require('./../index');
var db = app.get('db');

module.exports = {

createBlogEntry: function(req, res, next) {
    console.log(res);
    var blog = req.body;
    db.blogs.blog_create([blog.title, blog.author, blog.imageUrl, blog.content], function(err, blog) {
        if (err) {
            return res.status(500).send(err);
        }
    })
  }

};
angular.module("blog").controller("createEntryCtrl", function($scope, adminService) {

    $scope.createBlogEntry = function(blog){
        var promise = adminService.createBlogEntry(blog);
        promise.then(
            function(res) { alert("Entry Posted"); },
            function(res) { alert("Error in Posting"); }                
        );
    }

});
blog\u create.sql Sql:


您的服务可能会返回一个。这样,您可以这样做:

adminService.js:

更改此项:

    $http.post('/api/createBlogEntry', blog)
        .success(function(data) {
          alert("Entry Posted");
        })
        .error(function(data) {
          alert("Error in Posting");
        })
      }
    });
致:

在您的控制器中:

var app = require('./../index');
var db = app.get('db');

module.exports = {

createBlogEntry: function(req, res, next) {
    console.log(res);
    var blog = req.body;
    db.blogs.blog_create([blog.title, blog.author, blog.imageUrl, blog.content], function(err, blog) {
        if (err) {
            return res.status(500).send(err);
        }
    })
  }

};
angular.module("blog").controller("createEntryCtrl", function($scope, adminService) {

    $scope.createBlogEntry = function(blog){
        var promise = adminService.createBlogEntry(blog);
        promise.then(
            function(res) { alert("Entry Posted"); },
            function(res) { alert("Error in Posting"); }                
        );
    }

});
你可以从中看到承诺

这就是你说的吗


希望它能帮助您。:-

您的服务可能会返回a。这样,您可以这样做:

adminService.js:

更改此项:

    $http.post('/api/createBlogEntry', blog)
        .success(function(data) {
          alert("Entry Posted");
        })
        .error(function(data) {
          alert("Error in Posting");
        })
      }
    });
致:

在您的控制器中:

var app = require('./../index');
var db = app.get('db');

module.exports = {

createBlogEntry: function(req, res, next) {
    console.log(res);
    var blog = req.body;
    db.blogs.blog_create([blog.title, blog.author, blog.imageUrl, blog.content], function(err, blog) {
        if (err) {
            return res.status(500).send(err);
        }
    })
  }

};
angular.module("blog").controller("createEntryCtrl", function($scope, adminService) {

    $scope.createBlogEntry = function(blog){
        var promise = adminService.createBlogEntry(blog);
        promise.then(
            function(res) { alert("Entry Posted"); },
            function(res) { alert("Error in Posting"); }                
        );
    }

});
你可以从中看到承诺

这就是你说的吗


希望它能帮助您。:-

如果成功,您需要接收2xx代码状态才能触发

试试这个:

db.blogs.blog_create([blog.title, blog.author, blog.imageUrl, blog.content], function(err, blog) {
    if (err) {
        return res.status(500).send(err);
    }else{
        res.send(200); //Everything is ok !
    }
});
希望这有帮助!
为我的英语道歉!

如果成功,您需要收到2xx代码状态才能触发

试试这个:

db.blogs.blog_create([blog.title, blog.author, blog.imageUrl, blog.content], function(err, blog) {
    if (err) {
        return res.status(500).send(err);
    }else{
        res.send(200); //Everything is ok !
    }
});
希望这有帮助!
还有,对不起我的英语!

谢谢你的回答,我很感激。这确实有效,alert()现在启动并保存到数据库中!你是否总是需要res.send(200)才能成功工作?这将使crud的应用程序在将项目保存到数据库中(这意味着插入或更新)后变得非常有意义,如果没有错误,则响应是项(您发送以保存),但为什么要获得与我发送的相同的项?因为在对数据库进行操作后,可以添加新参数(ej:id、timestamp等)来修改项,并且这些参数可以在执行res.send时在视图中完全可用(ej:order a list of items by timestamp,在db中提供)(博客)它的发送默认为2xx代码状态,因此不需要调用res.send(200)谢谢你的回答,我很感激。这确实有效,alert()现在启动并保存到数据库!你是否总是需要res.send(200)才能成功工作?这将在将项目保存到数据库后在crud的应用程序中非常有用(这意味着插入或更新),如果没有错误,则响应是项目(您发送以保存),但为什么要获得与我发送的相同的项目?因为在对数据库进行操作后,可以添加新参数(ej:id、timestamp等)修改项目,并且这些参数在查看时可以完全使用(ej:按时间戳订购项目列表,以db为单位),执行res.send(blog)其发送默认为2xx代码状态,因此不必调用res.send(200)谢谢,我研究了承诺,这有点让我不知所措。另一位评论员指出我缺少res.send(200)对于.success to work.这很有效,你用.then promise的解决方案也是如此,但是用promise来代替它有什么好处呢?谢谢你,我研究了promises,这让我有些不知所措。另一位评论者指出我缺少res.send(200)对于。成功工作。这是有效的,你的解决方案也是如此。然后承诺,但是使用承诺的好处是什么?