2013-09-28 9 views
3

내 스키마처럼 비동기 쿼리에서 데이터를 toJSON를 오버라이드 (override) 다음 : 나는이를 직렬화 할 때() 메소드를 getProducts의 결과를 포함하는 몇 가지 방법이 있는지 알고 싶어[몽구스]

var CompanySchema = new Schema({ 
    // 
}); 

CompanySchema.methods.getProducts = function(next) { 
    var Product = require(...); 
    Product.find({...}).exec(function(err, products) { 
    if (err) 
     return next(err) 
    return next(null, products || []); 
    }); 
}; 

회사 개체 (예 :

)
CompanySchema.methods.toJSON = function() { 
    var obj = this.toObject(); 
    obj.products = this.getProducts(); 
    return obj; 
}; 

감사합니다.

+0

을하지 기적, 아니. – WiredPrairie

+0

질문에 대해 더 자세히 설명해 주시겠습니까? 정확히 무엇을 달성하고 싶습니까? – RohanJ

답변

2

확실히, toJSON 대신에 동 기적으로 포함 할 수 있습니다.

이유는 당신이 toJSON처럼, 동기 방식으로 비동기 방식 (같은 몽구스에서 find)를 사용할 수 없다는 것입니다.

그래서 당신은 비동기해야 할 것 :

CompanySchema.methods.toJSONAsync = function(callback) { 
    var obj = this.toObject(); 
    this.getProducts(function(products) { 
    obj.products = products; 
    }); 
    callback(obj); 
};