我是Angular JS和Node Js的新手。我想达到一个要求。我有一个带上传按钮的页面,我正在上传csv文件并从CSV文件中读取所有记录并发送到服务器端(节点js)。
在Node js中,将从角度Js获取数据并保存到MySQL数据库。我该如何实现这个要求?有人可以帮我这个要求。 提前谢谢。
Below is my **Angular Code:**<html><head><meta charset="UTF-8"> <title>File Upload Home</title></head><body ng-app = "myApp"><div ng-controller = "myCtrl"><table align="center" ><tr><td>Choose .csv file</td>
<td><input type="file" name="readCsvFile" id="readCsvFile" accept=".csv"> </td><td><input type="button" value="Upload" ng-click="uploadCsvFile()"></td></tr> </table></div><script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script> <script> var myApp = angular.module('myApp', []); myApp.controller('myCtrl', ['$scope', '$http', function($scope, $http){
$scope.uploadCsvFile = function() {
$http.post('/').success($scope.processData);
/* $http({
method: 'POST',
url: '/',
headers: {'Content-Type': undefined}
}).success($scope.processData); */
}; $scope.processData = function(csv){ var lines=csv.split("\n"); var result = []; var headerscsv=lines[0].split(";"); for(var i=1;i<lines.length;i++){
var obj = {};
var currentline=lines[i].split(",");
for(var j=0;j<headerscsv.length;j++){
obj[headerscsv[j]] = currentline[j];
}
result.push(obj); }
return JSON.stringify(result); //JSON } }]); </script> </body> </html>
**Node Js Code:**var express = require('express');var bodyParser =require('body-parser');var app = express();var mysql = require('mysql');//var expressValidator = require('express-validator');app.use(bodyParser.urlencoded({extended: true }));app.use(bodyParser.json({ type: '*/*' }));var connection =mysql.createConnection({
host: 'localhost',
user: '',
password: '',
database: 'dbname'});connection.connect(function(err){ if(err){ console.log('Database connection error'); }else{ console.log('Database connection successful'); }}); app.post('/', function(req, res) {var jsondata = JSON.parse(JSON.stringify(req.body));var values = [];for(var i=0; i<jsondata.length; i++){ values.push([jsondata[i].eno,jsondata[i].name,jsondata[i].age]);}connection.query('INSERT INTO members (eno, name, age) VALUES ?', [values], function(err,result) { if(err) { res.send('Error'); } else { res.send('Success'); }});});app.use(express.static('static'));var server =app.listen(3000,function(){ console.log('running on 3000...'); });
答案 0 :(得分:1)
如果您正在使用带有Node.js和Angular JS的MYSql
我认为您可以做的最简单的实现是:
multer
获取上传的文件并将其保存在您的服务器上。 https://www.npmjs.com/package/multer csvtojson
将csv数据/文件转换为json数据以便轻松使用https://www.npmjs.com/package/csvtojson Sequelize ORM
建立与MySQL的连接并插入数据。它使您能够使用json格式来处理SQL数据库所以您不需要编写RAW查询。 https://www.npmjs.com/package/sequelize