2016-07-15 3 views
1

저는 NodeJS, ExpressJS 및 AngularJS로 몇 가지 작업을 수행했습니다.함수 프로토 타입을 포함하는 객체 전달/라우팅

현재 프런트 엔드에만 결과가 표시되도록 모든 처리가 백엔드에서 수행되어야하는 그래프 플로팅 프로젝트에서 작업하고 있습니다. 이를 위해 데이터 함수 프로토 타입을 모두 포함하는 일부 객체를 프론트 엔드에 라우팅해야합니다. 지금까지 나는이 마지막 부분에 어떤 행운이 없었습니다. 프론트 엔드에서 $http.get으로 전화를 걸었을 때 내 루트가 노드 백엔드의 console.logres.send(object)으로 응답하면 프로토 타입 기능이있는 객체가 인쇄되지만 프런트 엔드의 브라우저에서 검색된 객체는 데이터 만 인쇄합니다/텍스트 부분을 삭제하고 모든 기능을 완전히 삭제합니다.

아래의 코드 조각은 요점을 얻을 참조하십시오

sample backend ExpressJS routes code snippet

// let's create an object, 
function Person(first, last, age, eyecolor) { 
    this.firstName = first; 
    this.lastName = last; 
    // a function prototype 
    this.fooBar = function(){ 
     return 'Yes'; 
    } 
}; 
// open up a route 
app.get('/getObject', function(req, res){ 
    var baby = new Person("John", "Doe"); 
    console.log(baby) 
    //this console logs the following, as expected: 
    // Person { firstName: 'John', lastName: 'Doe', fooBar: [Function] } 

    // respond with the entire object 
    res.send(baby) 
}); 

sample front end AngularJS code snippet

$http.get('/getObject') 
.success(function(data){ 
    console.log(data) 
    // THIS, however, only console logs the data, and discards the function 
    // Object {firstName: "John", lastName: "Doe"} 
}) 
.error(function(err){ 
    console.log(err) 
}); 

그것의 나에게 문제가에서 있는지 알아 내려고 노력하고, 내 머리를 긁적 있어요 익스프레스/노드, 또는 각도의 끝에서, 아니면 둘 다? 약간의 조작을 위해 프런트 엔드에 전체 객체 (프로토 타입 함수 포함)를 전달하는 것을 정말 좋아하기 때문에이 부분에 대한 도움을 주시면 감사하겠습니다. 이것이 가능하지 않다면, 적어도 적절한 해결 방법의 방향으로 나를 가리 키십시오 :-). 감사!

+1

일반적으로 유선을 통해 실행 스크립트를 보내는 것은 좋지 않습니다. 나는 당신이 당신의 디자인을 재고 할 것을 제안한다. 프론트 엔드는 JSON 형식으로 데이터를 수신해야합니다. – kennasoft

+0

나는 뭔가가 디자인과 관련되어 있다는 것을 알았지 만 가능했는지 알고 싶었다. 결국이 접근법이 우스꽝스러운 것 같습니다 ... –

답변

2

함수는 직렬화 할 수 없습니다. 이러한 이유 때문에 HTTP 통화와 함께 전송되지 않고 건너 뜁니다. MDN's docs for JSON.stringify() 가입일

: 변환시 발생

undefined 함수 또는 심볼 경우 역시 생략한다 (이 개체에서 발견된다) 또는가 발견되는 경우 (NULL로 검열 정렬). JSON.stringifyJSON.stringify(function(){}) 또는 JSON.stringify(undefined)과 같은 "순수한"값을 전달할 때 정의되지 않은 값을 반환 할 수도 있습니다.

대신 데이터를 전송하고 클라이언트에서 JS 개체를 다시 건조하십시오.

+0

일종의 문서를 찾고 있었지만 찾을 수 없었습니다. 이 @TimoSta 주셔서 감사합니다! 노드 백엔드에서 데이터를 처리하고 HTTP 호출을 통해 그래프 결과를 전달할 수있는 모듈 또는 메소드를 알지 못합니까? –

관련 문제