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