2013-06-23 3 views
0

을 작동 내 스키마입니다 :몽구스는 여기

var sourcesSchema = { 
    title: String, 
    name: String, 
    url: String, 
    description: String, 
    category: Array, 
    rating: Number, 
    source_pages: [{ 
     type: mongoose.Schema.Types.ObjectId, 
     ref: 'source_page', 
    }] 
} 


var sourcePageschema = { 
    uname: String, 
    source_name: String, 
    page_address: String, 
    driver_name: String, 
    product: { 
     type: mongoose.Schema.Types.ObjectId, 
     ref: 'products' //Edit: I'd put the schema. Silly me. 
    } 
} 

var productsSchema = { 
    title: String, 
    uname: String, 
    descriptin: String, 
    images: Array, 
    currency: String, 
    last_update_time: Number, 
    last_process_time: Number, 
    meta_data: {}, 
    tags: Array, 
    min_price: Number, 
    max_price: Number, 
    prices: [{ 
     type: mongoose.Schema.Types.ObjectId, 
     ref: 'prices' //Edit: I'd put the schema. Silly me. 
    }] 
} 

이 코드가 작동하고 성공적으로 source_pages를 채울 :

_sources.find().populate('source_pages').populate('source_pages.product').exec(function (err,sources) { 
    res.json(200, sources); 
}) 
:

_sources.find().populate('source_pages').exec(function (err,sources) { 
    res.json(200, sources); 
}); 

을하지만 난 너무 제품을 채우려면

이 오류 :

TypeError: Cannot call method 'path' of undefined at search (/home/sina/rhino2/node_modules/mongoose/lib/model.js:2088:28) at search (/home/sina/rhino2/node_modules/mongoose/lib/model.js:2107:22) at Function._getSchema (/home/sina/rhino2/node_modules/mongoose/lib/model.js:2114:5) at populate (/home/sina/rhino2/node_modules/mongoose/lib/model.js:1719:22) at Function.Model.populate (/home/sina/rhino2/node_modules/mongoose/lib/model.js:1702:5) at cb (/home/sina/rhino2/node_modules/mongoose/lib/query.js:1690:11) at /home/sina/rhino2/node_modules/mongoose/lib/utils.js:414:16 at /home/sina/rhino2/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js:158:16 at commandHandler (/home/sina/rhino2/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js:643:16) at null. (/home/sina/rhino2/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js:1641:20)

답변

2

나는 같은 문제를 방금 찾고 있었고, 당신이 찾고있는 것이 이것이 Mongoose: deep population (populate a populated field)이라고 믿는다.

기본적으로 콜백 함수에서 수행하고 반환 할 때까지는 수행하려는 작업을 수행 할 수 없습니다. 나는 그것을 피하려고했지만, 지금은 유일한 선택처럼 보입니다. 또 다른 옵션은, 당신이 이런 종류의 일을 많이 할 계획이라면, 관계형 DB를 사용하는 방법입니다.

+0

이 문제는 async nodejs 모듈 –

+0

으로 해결되었습니다. 감사합니다. 모듈을 살펴 봅니다. – abritez