Как сохранить массив субдокументов в соответствующие коллекции ссылок в mongodb - PullRequest
0 голосов
/ 30 мая 2020

У меня есть коллекция, например CustomerSchema как показано ниже

const CustomerSchema = new mongoose.Schema({
  name:String,
  vehicleTypes:[{
    type:mongoose.Schema.Types.ObjectId,
    ref:'VehicleType'
  }]
})

и VehicleTypeSchema как показано ниже

const VehicleTypeSchema = new mongoose.Schema({
      description:String,
      rate1:Number,
      rate2:Number
    })

Теперь я хотел бы сохранить CustomerSchema как

const Customer = mongoose.model('Customer',CustomerSchema);
const VehicleType = mongoose.model('VehicleType',VehicleTypeSchema)
const customerDoc = new Customer(somevalidobject);
customerDoc.vehicleTypes=[];
customerDoc.vehicleTypes.push(new VehicleType(vehicleTypeObject));
customerDoc.save();

, который должен хранить objectId для vehicleType в массиве VehicleTypes клиента, а также хранить VehicleType в соответствующей коллекции.

Это похоже на каскадирование Hibernate в Java.

Is это возможно в понедельник goose?

После просмотра документации я понимаю, что могу указать свой массив vehicleTypes в CustomerSchema как

const CustomerSchema = new mongoose.Schema({
  name:String,
  vehicleTypes:[VehicleType]
})

, что приведет к тому, что он будет хранится как субдокумент в документе Customer.

Если невозможно добиться сохранения в каскадном стиле, есть ли способ сделать это с помощью транзакций mon goose (например, с помощью помощника withTransaction).

...