用于子文档的{名}控制器

时间:2016-06-08 13:45:06

标签: node.js mongodb mongoose meanjs subdocument

我有关于如何为mongoose子文档设计我的meanjs控制器和路由的架构问题。

我的模型如下:

'use strict';

/**
 * Module dependencies.
 */
var mongoose = require('mongoose'),
  Schema = mongoose.Schema;

/**
 * Customerrpc Schema
 */
var CustomerrcpSchema = new Schema({
  company: {
    type: String,
    enum: ['Option1', 'Option2'],
    required: 'Please fill company name'
  },
  rcp: {
    type: String,
    required: 'Please fill rcp'
  },
  created: {
    type: Date,
    default: Date.now
  },
  user: {
    type: Schema.ObjectId,
    ref: 'User'
  }
});

/**
 * Customer Schema
 */
var CustomerSchema = new Schema({
  name: {
    type: String,
    default: '',
    required: 'Please fill Customer name',
    trim: true
  },
  description: {
    type: String,
    default: '',
    //required: 'Please fill Customer description',
    trim: true
  },
  url: {
    type: String,
    default: '',
    //required: 'Please fill Customer url',
    trim: true
  },
  rcp: [CustomerrcpSchema],
  created: {
    type: Date,
    default: Date.now
  },
  user: {
    type: Schema.ObjectId,
    ref: 'User'
  }
});

mongoose.model('Customer', CustomerSchema);
mongoose.model('Customerrcp', CustomerrcpSchema);

我在创建方法期间通过在服务器控制器上添加以下代码来尝试:

exports.create = function(req, res) {
  var customer = new Customer(req.body);
  customer.user = req.user;


  var rcp = new Customerrcp({
    company: 'Option1',
    rcp: 'dumm',
    user: req.user
  });

  customer.rcp = rcp;


  customer.save(function(err) {
    if (err) {
      return res.status(400).send({
        message: errorHandler.getErrorMessage(err)
      });
    } else {
      res.jsonp(customer);
    }
  });
};

这完全没问题。现在我的问题是从maindocument创建/修改/删除子文档的最佳过程是什么?

我想到总是使用主要文件'客户'但是这带来了一些我不喜欢的问题,就像保存孔文件一样。由于我的每个子文档都有一个uniq _id,我猜必须有更好的方法。

我想要的是仅用于具有create / save / remove语句的子文档的控制器。这甚至可能吗?

据我所知: 要创建一个新的子文档,我需要以下内容:mongoose查询的主文档的_id。所以我需要一个服务,将mandocument的_id移交给所选子文档的控制器。我能够做到这一点。

但是,如果这是正确的方式我不安全。 任何想法?

干杯, 迈克尔

0 个答案:

没有答案