Страницы

Поиск по вопросам

четверг, 11 июля 2019 г.

Как создать базу данных на основе модели mongoose?

Делаю приложение на meanio. Система реализует основу для разработки, просто создает пакет и пишешь свою бизнес логику, тривиальные настройки, как подключение базы данных, шаблонизатор, архитектуру системы делает среда meanio. Никогда еще сам не создавал базу данных на монго, вот сейчас над этим и застрял.
Написал следующую модель данных:
'use strict';
/** * Module dependencies. */ var mongoose = require('mongoose'), Schema = mongoose.Schema;
/** * Order Schema */ var OrderSchema = new Schema({ created: { type: Date, default: Date.now }, client: { type: Schema.ObjectId, ref: 'Client' }, paymentType: { type: Schema.ObjectId, ref:'paymentType', required: true }, passenger: [{ type: Schema.ObjectId, ref: 'passenger', required: true }], driver: { type: Schema.ObjectId, ref: 'driver', required: true }, status: { type: Schema.ObjectId, ref: 'status', required: true }, moment: { start: { type : Date, default: Date.now }, met: { type : Date, default: Date.now }, end: { type : Date, default: Date.now } }, direction:{ from: { type: Schema.ObjectId, ref: 'place', required: true }, to: { type: Schema.ObjectId, ref: 'place' } }, sum: { type: Number }, km: { type: Number }, comment: { type: Number }, ticket:{ type: Number }, permissions: { type: Array }, updated: { type: Array } });
/** * Validations
OrderSchema.path('title').validate(function(title) { return !!title; }, 'Title cannot be blank');
OrderSchema.path('content').validate(function(content) { return !!content; }, 'Content cannot be blank'); */ /** * Statics */ OrderSchema.statics.load = function(id, cb) { this.findOne({ _id: id }).populate('user', 'name username').exec(cb); };
mongoose.model('Order', OrderSchema);
Далее использую методы контроллера для создания, обновление, чтения и удаления. Вот метод для создания:
create: function(req, res) { var order = new Order(req.body); order.created = new Date(); ///... Указать другие параметры заказа
order.save(function(err) { if (err) { return res.status(500).json({ error: 'Cannot save the order' }); }
res.json(order); }); },
Для создания заказа используется справочники в базе данных и данные которые вводить диспетчер. Как например добавить в заказ клиента, если я еще не создал такую коллекцию клиенты? У меня имеется модель для каждого указанного в моделей.
Есть вариант заранее создать эти справочники в базе данных, но и тут я не понимаю как добавить в базу данных через консоль.
Полная версия JSON файла которая требуется для заказа
{ paymentType: 'Tariff', client: objectId(hfjdhjfhsfr3hbcy84783), passengers: [ { name: 'Аян', phone: '+77775647544' }, { name: 'Баян', phone: '+77776463392' }], created: 20160118123400, driver: objectId(hfjdhjfhsfr3hbcy84783), status: objectId(hfjdhjfhsfr3hbcy84783), moments: { start: 20160118123400,// Время подачи машины к пассажиру met: 20160118125023, // Время когда пассажир вышел из дома и сел в машину end: 20160118132014 // Время когда пассажир был доставлен на место }, direction: { from: 'Гостиница Казахстан', to: 'Аэропорт' }, sum: 2700, km: 23, comment: 'Пассажир с ребенком', ticket: '1234567890' }


Ответ

Решение было таким. Вроде все понял после наставления и прочтения документации mongoose
фактически тебе не надо ничего делать для создания базы данных и модели данных потому что монго создает базу автоматически при первом обращении к этой базе: http://www.tutorialspoint.com/mongodb/mongodb_create_database.htm MongoDB use DATABASE_NAME is used to create database. The command will create a new database, if it doesn't exist otherwise it will return the existing database. команда use неявно используется мангузом при подключении к монго: var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/ test '); test в данном случае и есть название базы http://mongoosejs.com/docs/index.html The first thing we need to do is include mongoose in our project and open a connection to the test database on our locally running instance of MongoDB. что касается модели данных, монго по большому счету похер на модель, она имеет набор коллекций в каждой базе и также создает коллекцию автоматически
/** * Module dependencies. */ var mongoose = require('mongoose'), Schema = mongoose.Schema;
/** * Order Schema */ var OrderSchema = new Schema({ created: { type: Date, default: Date.now },
это добро нужно только mongoose, который проверяет данные по этой модели самое важное из того, что стоит указывать в модели - это индексы, вот их мангуз явно создает в монге: http://mongoosejs.com/docs/guide.html
var animalSchema = new Schema({ name: String, type: String, tags: { type: [String], index: true } // field level });
все остальное желательно, но не обязательно mongo - это schemaless database (база без схемы) поэтому часть своего sql server опыта тебе лучше забыть в mongo все проще в плане "начать работу"!
я бы посоветовал тебе не торопиться и внимательно почитать little mongo book: http://www.pvsm.ru/download/mongodb-ru.pdf и документацию по мангузу, это займет пару дней, но зато поймешь что к чему.
По своему опыту скажу, что начать работать с монгой легче, чем с sql server
mongolab помнишь? облачная монга Там все тебе нужное следано через веб-интерфейс с ним еще проще начать

Комментариев нет:

Отправить комментарий