2015-10-15 89 views
2

注意:我是MEAN的新手,并且每个部分都意味着什么。MEAN.JS:如何创建需要另一个模型的1个模型

参照默认配置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' 
    } 
}); 

回答

3

如果我正确理解这些都是你需要遵循的步骤:

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); 
     } 
    }); 
}; 

2)创建程序Ø适当的政策(programs.server.policy.js,此处省略)和路线n中的服务器侧(program.server.routes.js)

module.exports = function (app) { 
    // program collection routes 
    app.route('/api/programs').all(programPolicy.isAllowed) 
     .get(programs.list); 

3)创建客户端角度事件服务(此处省略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(); 
     }; 

4)比加载页面上的程序列表:

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

我省略了一些所需的代码但是是应该提供一个好的开始,让我知道如果仍然感到棘手。

相关问题