문제

몽구스 쿼리에서 결과 (오브젝트)를 다시 시작하고 일부 키를 교체 / 제거하고 객체를 문자로 보내고 클라이언트로 보냅니다.

i console.log 객체를 사용하면 모든 것이 좋습니다 (모든 키는 나열되지 않으며, 더 이상 없음). 물체에 대해 내가 할 일을 할 때, 숨겨진 필드가 아무데도 (그리고 관심의 열쇠가 없어). 그들은 의미가 있습니다 - 그들은 몽구스에 속한다. 그러나 나는 그들을 원하지 않는다. object.keys 또는 object.geTownPropertyNames object - 숨겨진 필드 팝업을 사용할 때 똑같은 일이 발생합니다.

util.inspect (obj, true, null, true)로 요소를 검사하고 결과를 콘솔에 기록하고 싶었습니다. 콘솔의 결과는 Console.와 마찬가지로 동일합니다. 객체가 검사없이 직접 객체를 직접 가져 왔습니다.

이제 두 가지 질문;

  1. 객체에 대한 내부 / 숨겨진 정보를 실제로 올바르게 검사 할 수 있습니까?
  2. 어떻게 물체를 반복 할 수 있고 필드 만 얻을 수 있습니까? (예, for..in 루프 내에서 hasownproperty 확인을하고 있습니다)

    // 편집

    확인, 알았어. 일부 조사 후에, 몽구스 객체가 그 속성을 프록시하고 Console.logs가 예상되는 출력 구조에있는 이유를 설명하는 tojson 함수가 있음을 깨달았습니다. 해결책은 몽구스 자체 toobject 메소드를 사용하는 것입니다.

    mongooseObj.toObject({ getters: true, virtuals: false })
    
    .

    이렇게하면 Object.GetOwnPropertyNames를 반복하고 클라이언트가 알고 싶지 않으려면 키를 교체 / 제거합니다!

도움이 되었습니까?

해결책

문서 을보고 있다는 것을 짐작할 것입니다.데이터를 참조하십시오.내 추측이 맞으면 아마 이와 같이 원할 것입니다 :

Model.findOne({ name: 'john' }, function (err, doc) {
    var data = doc.toObject();

    // do whatever you need to with data
    delete data.age;
    delete data.weight;
    data.isAwesome = true;

    // now stringify the data and do something with it
    callback(JSON.stringify(data));
});
.

다른 팁

또한 문서에서 특정 필드에 액세스하려는 경우 에서 볼 수 있습니다 :

문서 # get

// path
doc.get('age') // 47

// dynamic casting to a string
doc.get('age', String) // "47"
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top