2016-02-19 64 views
1

我正在使用Angular作爲前端,並嘗試將JSON對象寫入與index.html相同的目錄中名爲'post.json'的文件。我可以使用PHP工作,但我想知道如何使用Node.js.我在網上看了很多帖子,但也許我不瞭解http POST實際上是如何工作的以及服務器需要從Angular應用程序寫入文件的設置。如何從Angular應用程序寫入文件以及節點服務器需要什麼設置?如何通過節點服務器將JSON對象寫入文件?

代碼在角文件:

// Add a Item to the list 
$scope.addItem = function() { 

    $scope.items.push({ 
     amount: $scope.itemAmount, 
     name: $scope.itemName 
    }); 

    var data = JSON.stringify($scope.items); 

    $http({ 
     url: 'post.json', 
     method: "POST", 
     data: data, 
     header: 'Content-Type: application/json' 
    }) 
    .then(function(response) { 
     console.log(response); 
    }, 
    function(response) { 
     console.log(response); 
    }); 

    // Clear input fields after push 
    $scope.itemAmount = ""; 
    $scope.itemName = ""; 
}; 

這是節點服務器文件:

var connect = require('connect'); 
var serveStatic = require('serve-static'); 
connect().use(serveStatic(__dirname)).listen(8080); 

fs = require('fs'); 
fs.open('post.json', 'w', function(err, fd){ 
    if(err){ 
     return console.error(err); 
    } 
    console.log("successful write"); 
}); 

然後我收到此錯誤:

enter image description here

+0

您是否設置了服務器本身?設置路線,那是? – Zakkery

+0

聽起來就是我所需要的。我會研究它,謝謝。 – nealous3

回答

1

下面是例子Node.js服務器使用Express.js框架(萬一你a不限於'連接')。

var express = require('express'); 
var app = express(); 
var fs = require('fs'); 

app.get('/', function (req, res) { 
    res.send('Hello World!'); 
}); 

app.post('/', function (req, res) { 
    fs.writeFile(__dirname+"/post.json", req.body, function(err) { 
    if(err) { 
     return console.log(err); 
    } 
    res.send('The file was saved!'); 
    }); 
}); 

app.listen(8080, function() { 
    console.log('Example app listening on port 8080!'); 
}); 

在您的角度控制器明確指定的網址:

$http({ 
    url: 'http://localhost:8080', 
    method: "POST", 
    data: data, 
    header: 'Content-Type: application/json' 
}) 

編輯:

刪除body-parser中間件簡化。

+0

這個工程,我剛剛添加'res.sendFile(__ dirname +'/index.html');'而不是'res.send('Hello World!');'然後創建一個名爲static的文件夾,其中包含我所有的靜態文件然後將這個'app.use(express.static('static'));'添加到node.js服務器文件。謝謝。看起來很乾淨。 – nealous3

相關問題