2014-04-07 75 views
0

我有一個用戶模型和一個使用貓鼬的寵物模型。使用貓鼬呈現所有文檔的每個子文檔

用戶模型:

var userSchema = mongoose.Schema({ 
    email  : String, 
    password  : String, 
    pets   : [Pet.schema] 

    }); 

    module.exports = mongoose.model('User', userSchema); 

寵物模式:

var petSchema = mongoose.Schema({ 
    name   : String 
    }); 

    module.exports = mongoose.model('Pet', petSchema); 

我想使所有用戶的所有寵物的頁面。我試圖做的:

app.get('/pets', function(req, res) { 

    Pet.find({}, function(err, pets){ 

     res.render('pets.ejs', {"pets":pets}); 

    }); 
}); 

但我只得到一個空數組[]。

我怎麼能得到每個寵物?

更一般地,我將不得不由用戶單獨使用寵物模式。我應該改變我的模型構建方式嗎?

感謝您的幫助!

回答

1

它看起來像你想嵌入Pet子文檔和使用,如果它不嵌入。

首先,如果你正在做嵌入式的,你需要在使用前定義寵物的架構(創建第一個)。如果你在嵌入,你無法以這種方式在寵物模型上找到它。

Mongoose Subdocuments

相反,如果你想爲Pet參考存儲User裏面,你需要存儲的ObjectId

pets : [{ type: Schema.Types.ObjectId, ref: "Pet"}] 

你會那麼可能會使用populate在運行時,以填補pets財產。

+0

非常感謝!事實上,我必須改變我的模型並作出參考。 – Marcolac