Я пришел в Node.js (Express.js) из Ruby on Rails.И там было довольно легко вносить любые изменения в db с помощью миграций.
Моя основная идея: у меня есть таблица, подобная словарю (поэтому некоторые из ключей: значения должны быть предварительно заполнены один раз при запуске, если нет значенийв этой таблице).
У меня есть две модели:
Maintenance
и MaintenanceType
.
Maintenance
использует MaintenanceType
через ref
.
Модель технического обслуживания:
const mongoose = require("mongoose");
mongoose.Promise = global.Promise;
const MaintenanceType = mongoose.model("MaintenanceType");
const maintenanceSchema = new mongoose.Schema(
{
number: {
type: String,
trim: true,
uppercase: true,
required: "enter a maintenance number"
},
maintenanceType: {
type: mongoose.Schema.ObjectId,
ref: "MaintenanceType"
},
description: {
type: String,
trim: true,
required: "enter a maintenance description"
}
},
{
toJSON: { virtuals: true },
toObject: { virtuals: true }
}
);
maintenanceSchema.index({
number: "text"
});
module.exports = mongoose.model("Maintenance", maintenanceSchema);
Модель технического обслуживания:
const mongoose = require("mongoose");
mongoose.Promise = global.Promise;
const maintenanceTypeSchema = new mongoose.Schema(
{
name: {
type: String,
trim: true,
required: "enter a maintenanceType name",
unique: "enter a unique maintenanceType name",
},
isDefault: {
type: Boolean,
default: false
}
},
{
toJSON: { virtuals: true },
toObject: { virtuals: true }
}
);
// Define our indexes
maintenanceTypeSchema.index({
number: "text"
});
module.exports = mongoose.model("MaintenanceType", maintenanceTypeSchema);
start.js:
const mongoose = require("mongoose");
// import environmental variables from variables.env file
require("dotenv").config({ path: "variables.env" });
mongoose.connect(process.env.DATABASE);
mongoose.Promise = global.Promise;
mongoose.connection.on("error", err => {
console.error(`? → ${err.message}`);
});
require("./models/MaintenanceType");
require("./models/Maintenance");
const app = require("./app");
app.set("port", process.env.PORT || 7777);
const server = app.listen(app.get("port"), () => {
console.log('started');
});
Итак: запустить сервер -> если таблица 'MaintenanceType' не имеет значений по умолчанию -> добавить некоторые значения по умолчанию (если их нет, например: [{name: 'wheels', isDefault: true}, {name: 'engine', isDefault: true}]
)
Я думал о app.listen
разделе.Но, может быть, это не лучшее место для действий .find
& .create bulk
?