Mongoose子文档不是在mongoDB中创建的,而是添加到父数组中

时间:2016-01-31 18:10:48

标签: node.js mongodb mongoose

我有一种更新商业信息的方法。通过在请求正文中发送工作日,可以将工作日添加到商务中。 以下代码工作正常,但工作日不是在mongoDB中创建的。它们只保存在Commerce文档中(作为数组od ids),但是集合名为" workday"不是在mongoDB中创建的。为什么没有创建?

            if(req.body.workdays){
                var workdays = req.body.workdays;
                var lunch = req.body.lunch.split("_");

                commerce.workdays=[];
                for(var i =0, size=workdays.length; i<size; i++ ){
                  var item=new Workday();
                  item.dayOfWeek = workdays[i];
                  item.owner=commerce._id;
                  var range = new Range();
                  range.initial = lunch[0];
                  range.end = lunch[1];
                  range.workday = item;
                  item.ranges.push(range);
                  commerce.workdays.push(item);
                }
              } 

              commerce.save(function(err) {
                if(!err) {
                  log.debug('Updated');
                  res.status(200).send(commerce);
                } else {
                  errorHandler.processError(err, res, log);
                }
              });

以下是模型:

var CommerceSchema = new Schema({
  // Common fields.
  createdAt  : {type : Date, default : Date.now},
  location: [Number, Number],
  photos: [{type : Schema.Types.ObjectId, ref : 'Photo'}],
  name: { type: String},
  address: { type: String},
  email: { type: String, default: "-"},
  workdays: [{type : Schema.Types.ObjectId, ref : 'Workday'}],
  description: { type: String, default: "-"},
  phone: { type: Number},
  user: {type : String, ref : 'User'},
  type: [{ type: Number, default: 0}]
});

var WorkdaySchema = new Schema({
  dayOfWeek: { type: Number},
  owner: {type : String},
  ranges: [{type : Schema.Types.ObjectId, ref : 'Range'}],
  createdAt  : {type : Date, default : Date.now}
});

var RangeSchema = new Schema({
  initial: { type: Number},
  end: { type: Number},
  workday: {type : String, ref : 'Workday'}
});

1 个答案:

答案 0 :(得分:2)

&#34;工作日&#34;期待Mongo ObjectIds。您必须先保存单个工作日,然后才能将其ID(_id)添加到工作日数组中。