使用 Node Express Postgresql 获取 404 尝试 http PUT

Getting 404 trying http PUT using Node Express Postgresql

编辑:没关系 - 我在 Angular 服务中犯了一个小错误。我的错。

我正在尝试通过使用 angular、Node 和 Express 以及 PostgreSql 构建一个简单的 CMS 来自学更多后端知识。我想出了如何实现除 UPDATE 之外的所有 CRUD 功能。我以为我明白该怎么做,但我不知道我哪里出错了。我一直收到 404。我误解了什么或走错了路?我知道这很简单,但我很新,所以非常感谢任何帮助理解我感到困惑的地方。这是相关代码:

HTML

<form ng-submit="updateBlogEntry(specificBlog.id, specificBlog.title, specificBlog.author, specificBlog.imageurl, specificBlog.content)">
    <h2>Title:</h2>
        <input type="text" ng-model="specificBlog.title"></input>
      <br>
    <h3>Author:</h3>
        <input type="text" ng-model="specificBlog.author"></input>
      <br>
    <h3>Photo:</h3>
        <input type="text" ng-model="specificBlog.imageurl"></input>
      <br>
    <h3>Content:</h3>
      <textarea type="text" rows="5" cols="50" ng-model="specificBlog.content">
      </textarea>
      <br>
    <button type="submit">Save Changes</button>
  </form>

Angular 控制器

  var id = $stateParams.id;
  var title = $stateParams.title;
  var author = $stateParams.author;
  var imageurl = $stateParams.imageurl;
  var content = $stateParams.content;

  $scope.updateBlogEntry = function(id, title, author, imageurl, content) {
    adminService.updateBlogEntry(id, title, author, imageurl, content);
  }

Angular 服务

this.updateBlogEntry = function(id, title, author, imageurl, content) {
    return $http({
      method: 'PUT',
      url: 'updateBlogEntry/' + id,
      data: {
        id: id,
        title: title,
        author: author,
        imageurl: imageurl,
        content: content
      }
    })
    .success(function(data) {
      alert("Entry Updated");
    })
    .error(function(data) {
      alert("Error Updating"); 
    })

服务器索引

// 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);
app.get('/api/getBlogEntries', blogCtrl.readBlogEntries);
app.get('/api/getBlogEntry/:id', blogCtrl.readBlogEntry);
// BUG Why isn't this working?
app.put('/api/updateBlogEntry/:id', blogCtrl.updateBlogEntry);

// CONNECTIONS //
var port = config.PORT;
app.listen(port, function() {
    console.log('Listening on port ' + port);
});

节点控制器

updateBlogEntry: function(req, res, next){
        db.blogs.blog_update([
            req.params.id,
            req.body.title,
            req.body.author,
            req.body.imageurl,
            req.body.content
        ],
        function(err, results){
            if (err){
                console.error(err);
                res.send(err);
            } else {
                res.send(results[0]);
            }
        })
    }

blog_update.sql

UPDATE blogs
set
  title     = COALESCE(, title),
  author    = COALESCE(, author),
  imageurl  = COALESCE(, imageurl),
  content   = COALESCE(, content)
WHERE id = 

RETURNING * ;

控制台报错:

angular.js:11881 PUT http://localhost:3000/updateBlogEntry/1 404 (Not Found)

你URL写错了。

根据您节点的快速路由,它应该是 /api/updateBlogEntry。

更改此部分

` url: 'updateBlogEntry/' + id,` 

应该是

url: '/api/updateBlogEntry/' + id,