2017-11-09 13 views
0

내가 원하는 것은 특정 페이지로 리다이렉트 할 때 req/res 오브젝트를 파일에 로깅하여 (나중에 어떤 오브젝트 값으로도 참조 할 수 있기 때문이다.) 그래서으로NodeJS의 파일에 req 객체 콜백 라우트를 쓰는 방법은 없습니까?

app.get("/route", function(req, res) { 
res.render("route"); 
fs.writeFile('./data.json', JSON.stringify(req, null, 2) , 'utf-8', function(err) { 
    if(err) { 
     return console.log(err); 
    } 
    console.log("The file was saved!"); 
}); 

위의 코드를 던지고 오류 :

나는이 시도

TypeError: Converting circular structure to JSON at Object.Stringify (native) 

내가 다른 일을해야 아무것도 있습니까? 어떤 도움을 주셔서 감사합니다. 미리 감사드립니다.

+1

가능한 중복 사용 만 쿼리를 저장해야하는 경우

이 시도 [JSON.stringify, TypeError : 원형 구조체를 JSON으로 변환하지 않기] (https://stackoverflow.com/questions/11616630/json-stringify-avoid-typeerror-converting-circular-structure-to-json) – juandemarco

+0

왜 하시겠습니까? 전체 개체를 저장 하시겠습니까? 어떤 필드를 저장 하시겠습니까? – Tvde1

+0

특히 당신을 위해이 답변을 고려해 보겠습니다 : https://stackoverflow.com/a/18354289/1053772 – juandemarco

답변

0

개체에 대한 참조가 있고 res에는 req이라는 참조가 포함되어 있으므로 실제로 stringify가 작동하지 않는 순환 참조입니다.

빠른 해결책은 저장하려는 속성에 대해 더 많은 선택을하는 것일 수 있습니다. 예를 들어, req.body을 파일에 저장하십시오. 실제로 필요한 데이터에 대해 까다롭게 취급하십시오.


장기적으로, 이것이 정말로 원하는 것인지 고려해야합니다. 파일 I/O는 "비싸다". 데이터를 데이터베이스에 저장하거나 메모리에 유지하는 것이 좋습니다.

+0

제안 해 주셔서 감사합니다. 나는 그것을 염두에 두겠다. –

0

저장하려면 모든 req-object가 필요합니까? 당신은 추가 데이터를 원하는 경우

app.get("/route", function(req, res) { 
    res.render("route"); 
    fs.writeFile('./data.json', JSON.stringify(req.query, null, 2), 
    'utf-8', function(err) { 
     if(err) { 
       return console.log(err); 
     } 
    console.log("The file was saved!"); 
}); 

는, 첫째로 새로운 객체를 생성하고 해당 개체에 대한 데이터를 할당하고,의 JSON.stringify(yourObject, null, 2)

+0

제안 해 주셔서 감사합니다. 나는 그것을 염두에 두겠다. –