Модель архитектуры Mongoose и Node требуют порядка - PullRequest
0 голосов
/ 12 декабря 2018

У меня проблемы с пониманием того, как мне следует структурировать файлы модели Mongoose, чтобы у меня не возникало проблем с зависимостями, когда они мне нужны.У меня много файлов моделей, и когда мне требуется один файл модели в другом для использования в качестве ссылочного типа, я сталкиваюсь с ошибками, если мне не нужны файлы модели по порядку.Что я должен делать по-другому архитектурно, если я не могу загрузить их в линейном порядке, потому что зависимости идут вверх и вниз по списку файлов моделей?Нужно ли просто перетаскивать их вниз и надеяться, что я не загоняю себя в угол или я делаю это неправильно?

app.js - начало моего приложения

const path = require('path');
const bodyParser = require("body-parser");
const mongoose = require('mongoose');

const express = require('express');

require('./models/task');
require('./models/taskstory');
require('./models/majortask');
require('./models/majortaskinstance');
require('./models/client');
require('./models/discipline');
require('./models/disciplineinstance');
require('./models/estimate');
require('./models/project');
require('./models/user');

const taskstoryRoutes = require('./routes/taskstory');
const majortaskRoutes = require('./routes/majortask');
const taskRoutes = require('./routes/task');
const userRoutes = require("./routes/user");
const clientRoutes = require("./routes/client");
const projectRoutes = require("./routes/project");
const estimateRoutes = require('./routes/estimate');
const disciplineRoutes = require('./routes/discipline');

const app = express();

И пример модели ...оценка.js

const mongoose = require('mongoose');
const disciplineinstanceschema = require('mongoose').model('disciplineInstance').schema;
var ObjectId = require('mongoose').Types.ObjectId;


const estimateScheme = mongoose.Schema({
  estimatename: { type: String, required: true, unique: true },
  summarytext: { type: String },
  scopetext: { type: String },
  disciplines:{type: [disciplineinstanceschema], sparse:true}
});

module.exports = mongoose.model('Estimate', estimateScheme);

1 Ответ

0 голосов
/ 12 декабря 2018

лучше импортировать модели в файлы маршрутов и импортировать зависимости каждой модели в свой файл, например:

// models/disciplineInstance.js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const disciplineInstanceSchema = new Schema({
  // some things
});
module.exports.disciplineInstanceSchema = disciplineInstanceSchema;  // schema
module.exports.DisciplineInstance = mongoose.model('DisciplineInstance', disciplineInstanceSchema); // model

// models/estimate.js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const {DisciplineInstanceSchema} = require('models/disciplineInstance.js');

const estimateScheme = new Schema({
  estimatename: { type: String, required: true, unique: true },
  summarytext: { type: String },
  scopetext: { type: String },
  disciplinesByRef:{   // by reference model design
  type: Schema.Types.ObjectId,
  ref: 'DisciplineInstance'  // this is a collection/model name
  }, 
  disciplinesEmbedded: {  // embedded model design
  type: DisciplineInstanceSchema
  }
});

module.exports = mongoose.model('Estimate', estimateScheme);
  • для получения дополнительной информации о embedded design против reference design см. Mongodb документы .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...