成功发布到数据库后无法触发 alert()
Can't get an alert() to fire on successfully posting to database
我正在学习如何使用后端,所以请原谅我,如果这是初级的,我似乎遗漏了一些简单的东西。我正在尝试创建一个简单的 CRUD 应用程序来学习,所以我选择制作一个博客平台,稍后我可以将其整合到我的网站中。
我正在使用 Angular、Node 和 Express 以及 PostgreSql。
我可以成功 post 条目进入数据库。单击 Enter 时,我可以在 Postico 上看到它们。我似乎无法弄清楚如何触发通知条目是否成功 posted 的警报。现在我在 Angular 服务中收到关于 .success 等的警报,但我觉得这是错误的。当我在这里寻找答案时,其他人在控制器中找到了它,但我试过了,但没有用。
这是我的相关代码:
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>
createEntryCtrl.js
angular 控制器
angular.module("blog").controller("createEntryCtrl", function($scope, adminService) {
$scope.createBlogEntry = function(blog){
adminService.createBlogEntry(blog);
}
});
adminService.js
Angular 服务:
angular.module("blog").service("adminService", function($http) {
this.createBlogEntry = 函数(博客){
$http.post('/api/createBlogEntry', blog)
.success(function(data) {
alert("Entry Posted");
})
.error(function(data) {
alert("Error in Posting");
})
}
});
index.js
服务器索引(减去不相关的端点)
// EXTERNAL MODULES //
var express = require('express');
var bodyParser = require('body-parser');
var session = require('express-session');
var massive = require('massive');
// CONFIG //
var config = require('./config');
// EXPRESS //
var app = module.exports = express();
app.use(express.static(__dirname + './../dist'));
app.use(bodyParser.json());
// MASSIVE //
var massiveUri = config.MASSIVE_URI;
var massiveServer = massive.connectSync({
connectionString: massiveUri
});
app.set('db', massiveServer);
var db = app.get('db');
var dbSetup = require('./services/dbSetup');
dbSetup.run();
// CONTROLLERS //
var userCtrl = require('./controllers/userCtrl');
var blogCtrl = require('./controllers/blogCtrl');
// Blog Endpoints //
app.post('/api/createBlogEntry', blogCtrl.createBlogEntry);
// CONNECTIONS //
var port = config.PORT;
app.listen(port, function() {
console.log('Listening on port ' + port);
});
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);
}
})
}
};
blog_create.sql
Sql:
INSERT INTO blogs (title, author, imageUrl, content)
VALUES (, , , )
您的服务可以 return Promise。这样做,你可以这样做:
adminService.js:
改变这个:
$http.post('/api/createBlogEntry', blog)
.success(function(data) {
alert("Entry Posted");
})
.error(function(data) {
alert("Error in Posting");
})
}
});
收件人:
return $http.post('/api/createBlogEntry', blog);
在你的控制器中:
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"); }
);
}
});
您可以在 angular here
中看到承诺
你说的是这个吗?
希望对您有所帮助。 :-)
成功时您需要收到 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 !
}
});
希望对您有所帮助!
对不起我的英语!
我正在学习如何使用后端,所以请原谅我,如果这是初级的,我似乎遗漏了一些简单的东西。我正在尝试创建一个简单的 CRUD 应用程序来学习,所以我选择制作一个博客平台,稍后我可以将其整合到我的网站中。
我正在使用 Angular、Node 和 Express 以及 PostgreSql。
我可以成功 post 条目进入数据库。单击 Enter 时,我可以在 Postico 上看到它们。我似乎无法弄清楚如何触发通知条目是否成功 posted 的警报。现在我在 Angular 服务中收到关于 .success 等的警报,但我觉得这是错误的。当我在这里寻找答案时,其他人在控制器中找到了它,但我试过了,但没有用。
这是我的相关代码:
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>
createEntryCtrl.js angular 控制器
angular.module("blog").controller("createEntryCtrl", function($scope, adminService) {
$scope.createBlogEntry = function(blog){
adminService.createBlogEntry(blog);
}
});
adminService.js Angular 服务:
angular.module("blog").service("adminService", function($http) {
this.createBlogEntry = 函数(博客){
$http.post('/api/createBlogEntry', blog)
.success(function(data) {
alert("Entry Posted");
})
.error(function(data) {
alert("Error in Posting");
})
}
});
index.js 服务器索引(减去不相关的端点)
// EXTERNAL MODULES //
var express = require('express');
var bodyParser = require('body-parser');
var session = require('express-session');
var massive = require('massive');
// CONFIG //
var config = require('./config');
// EXPRESS //
var app = module.exports = express();
app.use(express.static(__dirname + './../dist'));
app.use(bodyParser.json());
// MASSIVE //
var massiveUri = config.MASSIVE_URI;
var massiveServer = massive.connectSync({
connectionString: massiveUri
});
app.set('db', massiveServer);
var db = app.get('db');
var dbSetup = require('./services/dbSetup');
dbSetup.run();
// CONTROLLERS //
var userCtrl = require('./controllers/userCtrl');
var blogCtrl = require('./controllers/blogCtrl');
// Blog Endpoints //
app.post('/api/createBlogEntry', blogCtrl.createBlogEntry);
// CONNECTIONS //
var port = config.PORT;
app.listen(port, function() {
console.log('Listening on port ' + port);
});
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);
}
})
}
};
blog_create.sql Sql:
INSERT INTO blogs (title, author, imageUrl, content)
VALUES (, , , )
您的服务可以 return Promise。这样做,你可以这样做:
adminService.js:
改变这个:
$http.post('/api/createBlogEntry', blog)
.success(function(data) {
alert("Entry Posted");
})
.error(function(data) {
alert("Error in Posting");
})
}
});
收件人:
return $http.post('/api/createBlogEntry', blog);
在你的控制器中:
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"); }
);
}
});
您可以在 angular here
中看到承诺你说的是这个吗?
希望对您有所帮助。 :-)
成功时您需要收到 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 !
}
});
希望对您有所帮助! 对不起我的英语!