私はバックエンドの使い方を学んでいますので、これが初心者の場合は許してください。私は学ぶためにシンプルなCRUDアプリケーションを作成しようとしていますので、私は自分のウェブサイトに後で取り入れることができるブログプラットフォームを作りました。データベースに正常にポストすると警告()が発せられません
私はAngular、Node、Express、PostgreSQLを使用しています。
私は正常にデータベースにエントリを投稿できます。私はEnterをクリックするとPosticoでそれらを見ることができます。エントリーがうまく投稿されたかどうかを通知する警告を発する方法を見つけられないようです。今、私はアンサーサービスでアラートを出していますが、私はそれが間違っていると感じています。私がここで答えを探していたときに、他の人がコントローラーにそれを持っていましたが、私はそれを試みましたが、うまくいきませんでした。
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.module("blog").controller("createEntryCtrl", function($scope, adminService) {
$scope.createBlogEntry = function(blog){
adminService.createBlogEntry(blog);
}
});
adminService.js 01:
は、ここで私が持っている、関連するコードです角度サービス:
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 ($1, $2, $3, $4)
ありがとう、私はそれを感謝します。 これでうまくいきました。alert()が起動し、データベースに保存されます。 .successが機能するためには、常にres.send(200)する必要がありますか?それは意味をなさないでしょう – Diego
通常、アイテムをdbに保存した後(クッキーの挿入または更新を意味します)、エラーがなければレスポンスはアイテム(保存するために送信するアイテム)ですが、私は送る ? DBへの操作後にアイテムに新しいパラメータ(ej:id、timestampなど)を追加して変更することができ、これらのパラメータはビュー(ej:タイムスタンプでアイテムのリストを並べ替え、dbで提供)に役立つ。 res.send(ブログ)はデフォルトで2xxのコードステータスを送信するので、必要ではありませんres.send(200) –