2021-03-10--json操作

148 阅读1分钟
const low = require('lowdb')
const FileSync = require('lowdb/adapters/FileSync')
 
const adapter = new FileSync('db.json')
const db = low(adapter)

var http = require('http');
var url = require('url');
var util = require('util');
var querystring = require('querystring');


 
http.createServer(function(req, res){
    // res.writeHead(200, {'Content-Type': 'text/plain; charset=utf-8'});
    var params = url.parse(req.url, true).query;
    var pathName=url.parse(req.url, true).pathname
    
    var geoType=params.geoType
    var response={
        code:'200',
        data:null,
        message:"成功"
    }
    
        if(pathName=='/add'){
            var post=''
            req.on('data', function(chunk){ 
                if(chunk){
                    post += chunk;
                }   
        
            });

            req.on('end', function () {
                // 解析参数
                let jsonObj=JSON.parse(post)
                if(jsonObj&&jsonObj.data&&jsonObj.id&&jsonObj.geoType){
                    console.log(jsonObj.data)
                    db.get(jsonObj.geoType).push(jsonObj.data).write()
                    response.code=200
                    response.message='添加成功'
                }else{
                    response.code=300
                    response.message='请检查格式'
                }
               
            })
  
         
        }else if(pathName=='/query'){
            if(geoType==undefined){
                response.code==300
                response.message='geoType参数必填'
            }
            let id=params.id
            
            if(id!=undefined){
                let value=db.get(geoType).filter({id:params.id*1}).value()
                console.log(value)
                if(value!=undefined){
                    response.data=value
                }else{
                    response.message="未查询到数据"           
                }
           
            }else{
                let value=db.get(geoType).value()
                response.data=value
            }
            
        }else if(pathName=='/update'){
            var post=''
            req.on('data', function(chunk){ 
                if(chunk){
                    post += chunk;
                }   
        
            });

            req.on('end', function () {
                // 解析参数
                let jsonObj=JSON.parse(post)
                if(jsonObj&&jsonObj.data&&jsonObj.id&&jsonObj.geoType){
                    console.log('update',jsonObj)
                    var result=db.get(jsonObj.geoType).find({id:jsonObj.id*1}).assign(jsonObj.data).write()                      
                  
                    response.message='更新成功'
                }else{
                    response.code=300
                    response.message='请检查格式'
                }
               
            })
  
           
        }else if(pathName=='/delete'){
            if(geoType==undefined){
                response.code==300
                response.message='geoType参数必填'
            }
            let id=params.id
            if(id!=undefined){
                db.get(geoType).remove({id:id*1}).write()
            }else{
                response.message="请输入要删除的id" 
            }
          
           
        
        }
    
   
    res.write(JSON.stringify(response))
    res.end();
}).listen(3000);