Как получить сведения о коллекции из подобъекта в mongoose

#node.js #mongodb #mongoose #nodes

#node.js #mongodb #мангуст #узлы

Вопрос:

Мой желаемый результат — извлечь этот данный результат из коллекции с именем dashboard, у меня нет идентификатора объекта коллекции dashboard, единственное, что у меня есть, это идентификатор объекта электронной почты внутри него:

Я предоставляю вам желаемый результат и все необходимые детали:

Желаемый результат и данные, хранящиеся в коллекции Dashboard

 {
 email: { id: 5f8b4cfc0064d241048d8d2e, username: 'd@d.com' },
 _id: 5f8b4d670064d241048d8d2f,
 name: 'doud',
 age: 22,
 gender: 'male',
 height: 65,
 weight: 65,
 __v: 0
}
  

неправильно написанный код:

 router.get("/dashboard/:id", (req, res)=>{
    Dashboard.find({email:req.param.id}).populate("email").exec( (err, foundDashboard)=>{
        if(err){
            console.log(err);
        }
        else{
            console.log(foundDashboard);
            res.render("show", {dashboard: foundDashboard});
        }
    });
  

Схема пользователя

 var UserSchema = new mongoose.Schema({
    email: String,
    password: String
});
  

Схема панели инструментов

 var DashboardSchema = new mongoose.Schema({
    // image: String,
    name: String,
    age:Number,
    gender: String,
    email: {
        id: {
            type: mongoose.Schema.Types.ObjectId,
            ref: "User"
        },
        username: String
    },
    height: Number,
    weight: Number   
});
  

Ответ №1:

Просто измените эту строку и попробуйте.

Dashboard.find({email:req.param.id}).populate("email").exec( (err, foundDashboard)=>{

Для

 Dashboard.find({"email.id":req.param.id}).exec( (err, foundDashboard)=>{