谈谈Node.js在公司业务中的应用 1)
** Nodejs能够快速的进行网站开发这个是得到认同的,我们公司已经用Nodejs成功开发了一系列人事系统、短信平台、公司信息化服务平台等网站。 ** 1) 数据处理-》往数据仓库发展 ** 由于公司最近于国外公司有合作,国外公司发过来一个csv格式的文件,要求我们用一段自动化执行程序转化为需要的csv格式;我们选择了nodejs,经过视频演示,老外对结果非常满意,代码如下:
var ndir = require('ndir');
var assert = require('assert');
var fs=require('fs')
var lineNumber = 0;
var illNumber=0;
ndir.createLineReader('./bulk.csv').on('line', function(line) {
assert.ok(Buffer.isBuffer(line));
var _line=line.toString()
if(_line.match(/"{1}.+"{1}/)){
var m= _line.match(/"{1}.+"{1}/)[0]
var n=m.replace(',',' ')
var o=n.replace(/"/g,'')
_line= _line.replace(/"{1}.+"{1}/,o)
// console.log(_line)
// console.log('%d: %s', ++lineNumber, line.toString());
illNumber++
var arr=[lineNumber+1,'\n']
fs.appendFile('bulk_error.txt',arr,'utf-8',function(err,data){
if(err)
{
console.log(err);
}
})
}
var a = _line.split(',')
var b =[]
// console.log(lineNumber)
if(lineNumber==0){
b =[
'SOURCETYPE',
'DISIPLINE',
'MASTER REF',
'UNIT',
'AREA',
'ISO',
'ITR',
'IDENTCODE',
'GROUP',
'PART',
'TAGNUMBER',
'SIZE1',
'SIZE2',
'SIZE3',
'SIZE4',
'SHORT DESC',
'DESCRIPTION',
'QTY',
'UNIT',
'\r'
]
// console.log(a.length)
}else{
var size1=''
var size2=''
if(a[15]){
size1='-'+a[15]
}
if(a[17]){
size2='-'+a[17]
}
var s=a[10]+size1+size2
s=s.replace(/\s+/g,'')
// a.splice(10,0,s)
var group
var part
var _group=a[21].substring(0,a[21].indexOf(' '))
switch(_group){
case 'PIPE':
{
if(a[10].substring(0,2)=='PN'){
group ='PJ'
part='EL'
break
}
else if(a[10].substring(0,2)=='PI'){
group ='PP'
part='PS'
break
}
else{
group ='a'
part='b'
break
}
}
case 'FLANGE':{
group='PF'
part='FP'
break
}
case 'ELBOW':{
group='PJ'
part='EL'
break
}
case 'BRANCH':{
group='PJ'
part='EL'
break
}
case 'CAP':{
group='PJ'
part='EL'
break
}
case 'EQUAL':{
group='PJ'
part='EL'
break
}
case 'REDUCER':{
group='PJ'
part='EL'
break
}
case 'SWAGE':{
group='PJ'
part='EL'
break
}
case 'TEE':{
group='PJ'
part='EL'
break
}
case 'SPECTACLE':{
group='PB'
part='BB'
break
}
case 'STUB':{
group='PF'
part='FP'
break
}
case 'VALVE':{
group='PV'
part='VG'
break
}
case 'BALL':{
group='PV'
part='VG'
break
}
case 'GASKET':{
group='PG'
part='GP'
break
}
case 'STUDBOLT':{
group='PL'
part='LM'
break
}
case 'GATE':{
group='PV'
part='VG'
break
}
case 'PLUG':{
group='PJ'
part='EL'
break
}
case 'REINFORCED':{
group='PQ'
part='AA'
break
}
case 'COUPLING':{
group='PJ'
part='EL'
break
}
case 'M':{
group='PP'
part='PS'
break
}
case 'SPACER':{
group='PB'
part='BB'
break
}
default:
{group='a'
part='b'
break
}
}
//a.splice(10,0,part)
//a.splice(10,0,group)
b.push('BULK')
b.push(a[1])
b.push(a[2])
b.push('1')
b.push(a[5])
b.push(a[6])
b.push('TAG WO MS')
b.push(' ')
b.push(group)
b.push(part)
b.push(s)
b.push(a[15])
b.push(a[17])
b.push(' ')
b.push(a[5].substring(7,10))
b.push(a[10])
b.push(a[21])
b.push(a[8])
b.push(a[9])
b.push('\r')
//console.log(group+','+part)
}
//console.log(b)
fs.appendFile('bulk_con.csv',b,'utf-8',function(err,data){
if(err)
{
console.log(err);
}
})
lineNumber++
}).on('end', function() {
console.log('Done,I had already converted %d rows',lineNumber)
console.log('also I found %d rows data of Description illegal',illNumber)
console.log('You can open the bulk_error to check')
// console.log('read a file done.')
}).on('error', function(err) {
console.log('error: ', err.message)
});
其实我只想说,Noder可以做的还很多,不仅仅是网站开发