Node.js 使用mongoose呈现所有文档的每个子文档
我有一个用户模型和一个宠物模型,使用猫鼬 用户模型:Node.js 使用mongoose呈现所有文档的每个子文档,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有一个用户模型和一个宠物模型,使用猫鼬 用户模型: var userSchema = mongoose.Schema({ email : String, password : String, pets : [Pet.schema] }); module.exports = mongoose.model('User', userSchema); 宠物型号: var petSchema = mongoo
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});
});
});
但我只得到一个空数组[]
我怎样才能得到每一只宠物
更一般地说,我将不得不独立于用户使用Pet模型。我应该改变构建模型的方式吗
谢谢你的帮助 看起来您正试图嵌入
Pet
子文档,并将其用作未嵌入的文档
首先,如果您正在执行嵌入式操作,则需要在使用Pet之前定义它的模式(首先创建它)。如果你正在嵌入,你就无法通过这种方式找到宠物的模型
相反,如果您想在用户
中存储对宠物
的引用,则需要存储其对象ID
pets : [{ type: Schema.Types.ObjectId, ref: "Pet"}]
然后,您可能会在运行时使用填充
pets
属性 非常感谢!事实上,我必须改变我的模式,做一个参考。