我有一个使用Mongoose的用户模型和宠物模型。
用户模型:
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});
});
});
但我只得到一个空数组[]。
我怎样才能得到每一只宠物?
更一般地说,我将不得不独立于用户使用宠物模型。我应该改变模型的构造方式吗?
感谢您的帮助!
答案 0 :(得分:1)
看起来您正在尝试嵌入Pet
子文档并使用,就好像它没有嵌入一样。
首先,如果您正在进行嵌入式操作,则需要在使用之前为Pet定义架构(首先创建它)。如果您正在嵌入,那么就无法通过这种方式找到宠物模型。
如果您希望在Pet
内存储对User
的引用,则需要存储其ObjectId
。
pets : [{ type: Schema.Types.ObjectId, ref: "Pet"}]
然后,您可能会在运行时使用populate
填充pets
属性。