Импорт пользовательской схемы mongoose в другую схему - PullRequest
0 голосов
/ 08 января 2019

У моего программного обеспечения есть схема Мангуста, назовем ее carSchema, и я экспортирую модель carSchema с именем Car. Пример:

/* Car.js */
var carSchema= new Schema({
    _id: Schema.Types.ObjectId,
    type: String,
    wheels: Number
});

carSchema.statics.drive = async function(){
    ...
}

module.exports = mongoose.model('Car', carSchema);

Теперь скажите, что в моем программном обеспечении есть другая схема с именем lotSchema в другом файле, в которой используется carSchema:

/* Lot.js */
var lotSchema = new Schema({
    _id: Schema.Types.ObjectId,
    carArr: [carSchema]
});

lotSchema.statics.getAllId = async function(){
    return carSchema[0]['_id']
}

Как правильно импортировать или экспортировать carSchema для использования в lotSchema? Хватит ли простого const carSchema = require('Car.js')?

Ответы [ 3 ]

0 голосов
/ 08 января 2019

Если вы не используете не используете es6 / 7, вы можете сделать это

 /* Car.js */
    const carSchema= new Schema({
        _id: Schema.Types.ObjectId,
        type: String,
        wheels: Number
    });

    carSchema.statics.drive = async function(){
        ...
    }
    module.exports.carSchema = carSchema;

    module.exports.carModel = mongoose.model('Car', carSchema);





 /* Lot.js */
    const { carSchema , carModel } = require('./Car.js');
    var lotSchema = new Schema({
        _id: Schema.Types.ObjectId,
        carArr: [carSchema]
    });

    lotSchema.statics.getAllId = async function(){
        return carSchema[0]['_id']
    }
0 голосов
/ 08 января 2019

Вы можете сделать это в Car.js

module.exports = {
  useCarSchema: function(myCollection) {
    return mongoose.model('Car', carSchema, myCollection);
  }
}

И это в Lot.js

var carSchema     = require('./Car.js');
var Car =  carSchema.useCarSchema(myCollection);
0 голосов
/ 08 января 2019

Вы можете использовать Заполнить :

Население - это процесс автоматической замены указанного пути в документе с документом (ами) из других коллекций. Мы может заполнять один документ, несколько документов, простой объект, несколько простых объектов или все объекты, возвращенные из запроса.

Пример:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const carSchema= new Schema({
    _id: Schema.Types.ObjectId,
    type: String,
    wheels: Number
});

const lotSchema = new Schema({
    _id: Schema.Types.ObjectId,
    cars: [{ type: Schema.Types.ObjectId, ref: 'Car' }]
});

mongoose.model('Car', carSchema);
mongoose.model('Lot', lotSchema);

Теперь, чтобы заполнить работы, вам сначала нужно создать объект автомобиля car = new Car({}) и объект партии lot = new Lot({}), а затем:

lot.cars.push(car);
lot.save(callback); 
...