创建模型余烬js的记录数组

时间:2017-11-06 09:54:22

标签: ember.js ember-data ember-model

我有一个名为' someModel'如下



"someModel": [{
      "type": "Booking",
      "email": "sunny.wayne@some.com,mahela.jayawardane@some.com",
      "isInstant": true,
      "cutHours": 72,
      "days": -1
    },
    {
      "type": "Booking",
      "email": "",
      "isInstant": false,
      "cutHours": 72,
      "days": -1
    },
    {
      "type": "Arrival",
      "email": "mahela.jayawardane@some.com",
      "isInstant": false,
      "cutHours": 72,
      "days": 1
    },
    {
      "type": "Cancellation",
      "email": "sunny.wayne@some.com",
      "isInstant": false,
      "cutHours": 72,
      "days": -1
    }
  ]




默认情况下,我需要一个包含4个此模型记录的数组,默认值如下



var SeasonSchema = new mongoose.Schema({
    name: String,
    from: Date,
    to: Date
});

mongoose.model("Venue.seasons", SeasonSchema);

var HourSeasonSchema = new mongoose.Schema({
    seasonref: {type: mongoose.Schema.Types.ObjectId, ref: 'Venue.seasons'},
    "1" : DaySchema,
    "2" : DaySchema,
    "3" : DaySchema,
    "4" : DaySchema,
    "5" : DaySchema,
    "6" : DaySchema,
    "7" : DaySchema
});

var VenueSchema = new mongoose.Schema({
    title: {type: String, default: ''},
    description: {type: String, default: ''},        
    images: [mongoose.Schema.Types.Mixed],
    address: AddressSchema,
    flags: {
        toddlers: Number
    },
    seasons: [SeasonSchema],
    hours: [HourSeasonSchema]
});




这样做的理想方式是什么?我查看了createRecord,但一次只能创建一条记录。我的后端逻辑期望数据采用上述格式,我还必须更新根据用户操作创建的4条记录。

1 个答案:

答案 0 :(得分:0)

使用hasMany关系中的另一个模型包装“ someModel”。

创建另一个模型,让我们称之为“ parentModel”。 在其模型定义中,将“ someModel”添加为具有hasMany关系的属性。

parentModel.js

export default DS.Model.extend({
  someModel: DS.attr('someModel')
});

现在创建一个parentModel记录并向其中添加多达someModel记录并保存parentModel。

let pModel = this.get("store").createRecord("parentModel");
pModel.get("someModel").addObject(this.get("store").createRecord("someModel", {
 type: "Booking",
 email: "sunny.wayne@some.com,mahela.jayawardane@some.com",
 isInstant: true,
 cutHours: 72,
 days: -1
}));
pModel.save();

查看您提供的JSON结构,您需要使用JSONSerializer和EmbeddedRecordsMixin在响应中获取someModel json。 还要确保为响应中的某些模型记录而撤消“ id”。

炭烬形成的请求就是这样

{
 "someModel": [{
   "type": "Booking",
   "email": "sunny.wayne@some.com,mahela.jayawardane@some.com",
   "isInstant": true,
   "cutHours": 72,
   "days": -1
 }]
}