2017-12-07 4 views
1

가상 카트 페이지를 구현하는 작업이 있는데 체크 아웃을 클릭하면 json 파일 "ordersTest.json"에 다음 구조로 요청을 보내려고합니다. { "orders": [] }. 그래서 게시물 요청이 전송되면 json의 해당 orders 배열에 데이터를 넣어야합니다. 나는 Nodejs에 완전히 익숙하지 않다. 이것은 그것에 대한 나의 첫 번째 프로젝트이고 나는 아주 간단한 서버를 생각해 냈습니다.json 파일에 개체 추가

const express = require('express') 
const path = require('path') 
const fs = require('fs') 
const url = require('url') 
const bodyParser = require('body-parser') 
const app = express() 
const ordersJson = require('./public/ordersTest.json'); 


app.use(bodyParser.json());  
app.use(bodyParser.urlencoded({  
    extended: true 
})); 
app.post('/api/orders', (req, res) => { 
    let body = req.body; 
    console.log(body); 
    fs.appendFile('./public/ordersTest.json', JSON.stringify(body), err => { 
     if (err) console.log(err); 
    }) 
}) 

그러나이 것은 파일 끝에 만 추가됩니다. 나는이 주문 배열

안에 넣을 필요가 이것은 게시물의 본문에 예를 들어 객체를 전달 내 아약스 :

$(".btn-checkout").on('click', function() { 
    let date = new Date(); 
    $.ajax({ 
     method : "POST", 
     url: "/api/orders", 
     data : {a: "abc"},//{ order: "order",date: date.toDateString(), order: JSON.stringify(cart)}, 
     success : function(success){ 
      console.log(success,'success'); 
     }, 
     error : function(err) { 
      console.log(err); 
     } 
    }); 
    clearCart(); 
    displayClearedCart(); 
}); 

답변

2

당신은 JSON 파일을 구문 분석하고 객체처럼 취급해야합니다. 완료되면 JSON으로 다시 변환하고 파일을 덮어 씁니다. like

app.post('/api/orders', (req, res) => { 
    let body = req.body; 
    var ordersTest = require('./public/ordersTest.json'); 
    ordersTest.orders.push(body); 
    fs.writeFile('./public/ordersTest.json', JSON.stringify(ordersTest), function(err) { 
     if (err) res.sendStatus(500) 
     res.sendStatus(200); 
    }); 
}) 

테스트하지 않은 경우 오타를 수정하십시오.

+0

고마워요! 완벽하게 일했습니다. –