2015-03-31 3 views
1

У меня есть большой вложенный документ, который мне нужно заполнить.Как я могу заполнить несколько ссылок на модель во вложенном документе?

var PortfolioSchema = new Schema({ 
    bonds    : { 
     percentage   : Number, 
     USA     : { 
      percentage   : Number, 
      treasury    : { 
       percentage   : Number, 
       securities   : [ { 
        percentage    : Number, 
        info     : { type: ObjectId, ref: 'security' } 
       } ] 
      }, 
      municipal   : { 
       percentage   : Number, 
       securities   : [ { 
        percentage    : Number, 
        info     : { type: ObjectId, ref: 'security' } 
       } ] 
      }, 
      corporate   : { 
       percentage   : Number, 
       securities   : [ { 
        percentage    : Number, 
        info     : { type: ObjectId, ref: 'security' } 
       } ] 
      } 
     }, 
     international  : { 
      percentage   : Number, 
      developed   : { 
       percentage   : Number, 
       securities   : [ { 
        percentage    : Number, 
        info     : { type: ObjectId, ref: 'security' } 
       } ] 
      }, 
      emergent  : { 
       percentage   : Number, 
       securities   : [ { 
        percentage    : Number, 
        info     : { type: ObjectId, ref: 'security' } 
       } ] 
      } 
     } 
    }, 
    stocks   : { 
     percentage   : Number, 
     USA     : { 
      percentage   : Number, 
      largeCaps   : { 
       percentage   : Number, 
       securities   : [ { 
        percentage    : Number, 
        info     : { type: ObjectId, ref: 'security' } 
       } ] 
      }, 
      mediumCaps   : { 
       percentage   : Number, 
       securities   : [ { 
        percentage    : Number, 
        info     : { type: ObjectId, ref: 'security' } 
       } ] 
      }, 
      smallCaps   : { 
       percentage   : Number, 
       securities   : [ { 
        percentage    : Number, 
        info     : { type: ObjectId, ref: 'security' } 
       } ] 
      } 
     }, 
     international  : { 
      percentage   : Number, 
      developed   : { 
       percentage   : Number, 
       securities   : [ { 
        percentage    : Number, 
        info     : { type: ObjectId, ref: 'security' } 
       } ] 
      }, 
      emergent  : { 
       percentage   : Number, 
       securities   : [ { 
        percentage    : Number, 
        info     : { type: ObjectId, ref: 'security' } 
       } ] 
      } 
     } 
    }, 
    _goal    : { type: ObjectId, ref: 'goal' }, 
    createdAt   : { type: Date, default: Date.now }, 
    updatedAt   : { type: Date, default: Date.now } 
}); 

Как заполнить security во всех этих полях? Я пробовал этот код ниже, но он не работает.

Portfolio 
    .findById(req.params.portfolio_id) 
    .populate("security") 
    .exec(function (err, portfolio) { 
     if (err) { 
      return res.status(404).json("Portfolio not found."); 
     } 
     res.render('portfolios/show.ejs', { 
      portfolio: portfolio 
     }); 
    }); 

ответ

0

Я просто понял это ... Все, что я должен сделать, это заполнить каждый и каждый из этих полей ссылок:

Portfolio 
    .findById(req.params.portfolio_id) 
    .populate("bonds.USA.treasury.securities.info") 
    .populate("bonds.USA.municipal.securities.info") 
    .populate("bonds.USA.corporate.securities.info") 
    .populate("bonds.international.developed.securities.info") 
    .populate("bonds.international.emergent.securities.info") 
    .populate("stocks.USA.largeCaps.securities.info") 
    .populate("stocks.USA.mediumCaps.securities.info") 
    .populate("stocks.USA.smallCaps.securities.info") 
    .populate("stocks.international.developed.securities.info") 
    .populate("stocks.international.emergent.securities.info") 
    .exec(function (err, portfolio) { 
     if (err) { 
      return res.status(404).json("Portfolio not found."); 
     } 
     res.render('portfolios/show.ejs', { 
      portfolio: portfolio 
     }); 
    }); 

 Смежные вопросы

  • Нет связанных вопросов^_^