MEAN.JS:如何创建需要另一个模型的 1 个模型

MEAN.JS: How to create of 1 model that requires another

注意:我是 MEAN 的新手,也是 MEAN 组成部分的新手。

参考MEANJS的默认配置和示例模块Articles。我创建了另一个名为 Program 的模型。

我知道如何将其他字段或属性添加到模型以便能够相应地创建和编辑,但我不知道新的 属性 是对另一个模型的引用。

在不深入了解 Program 是什么的细节的情况下,我想修改 Articles 的现有创建和编辑页面,以要求用户从下拉列表中指定 Program它属于。

我已经更新了 Articles 架构

var ArticleSchema = new Schema({
  created: {
    type: Date,
    default: Date.now
  },
  title: {
    type: String,
    default: '',
    trim: true,
    required: 'Title cannot be blank'
  },
  content: {
    type: String,
    default: '',
    trim: true
  },
  user: {
    type: Schema.ObjectId,
    ref: 'User'
  },
  program: {
    type: Schema.ObjectId,
    ref: 'Program',
    required: 'Program cannot be blank'
  }
});

这些是您需要遵循的步骤:

  1. 确保您的程序服务器端控制器中有列表功能(program.server.controller.js)

     TheProgram = mongoose.model('Program')
    
     ...
     /**
      * List of programs
      */
     exports.list = function (req, res) {
         console.log('ProgramController.server.list');
         TheProgram.find().exec(function (err, events) {
             if (err) {
                 return res.status(400).send({
                     message: errorHandler.getErrorMessage(err)
                 });
             } else {
                 res.json(programs);
             }
         });
     };
    
  1. 为服务器端的程序创建适当的策略(programs.server.policy.js,此处省略)和路由(program.server.routes.js)

     module.exports = function (app) {
         // program collection routes
         app.route('/api/programs').all(programPolicy.isAllowed)
             .get(programs.list);
    
  2. 创建客户端angular事件服务(programs.client.service.js此处省略)应该注入控制器并创建控制器(programs.client.controller.js)获取服务器端的程序列表:

         // Find a list of Programs
         $scope.find = function () {
             $log.info('executing ProgramController.$scope.find');
             self.programs = Programs.query();
         };
    
  3. 然后在页面加载节目列表:

     <select ng-options="program in programs" ng-model="selectedProgram"></select>
    

我省略了一些必需的代码,但这应该是一个好的开始。