(Это руководство изначально было опубликовано на портале документации Windows Azure в январе 2013 г.) d
Приветствую, искатели приключений! Добро пожаловать в MongoDB как услуга. Вы хотите создать приложение Node.js в Windows Azure с MongoDB с помощью надстройки MongoLab Azure Store?
В этом уроке вы будете:
- Предоставление базы данных. Дополнительный модуль MongoLab для Windows Azure Store предоставит вам базу данных MongoDB, размещенную в облаке Windows Azure и управляемую платформой облачной базы данных MongoLab .
- Создайте приложение — это будет простое приложение Node.js для ведения списка задач.
- Развертывание приложения. Связав несколько хуков конфигурации, мы сделаем наш код быстрым.
- Управление базой данных. Наконец, мы покажем вам веб-портал управления базами данных MongoLab, где вы можете легко находить, визуализировать и изменять данные.
В любое время на протяжении всего этого урока, не стесняйтесь, пишите на адрес support@mongolab.com, если у вас есть какие-либо вопросы. Чтобы выполнить это руководство, вам нужна учетная запись Windows Azure с включенной функцией веб-сайтов Windows Azure. Вы можете создать бесплатную пробную учетную запись и включить функции предварительного просмотра всего за пару минут. Подробнее см. В разделе Создание учетной записи Windows Azure и включение учебника по функциям предварительного просмотра .
Кроме того, убедитесь, что у вас установлено следующее:
Быстрый старт
Если вы знакомы с Windows Azure Store, воспользуйтесь этим разделом, чтобы быстро начать работу. В противном случае, продолжайте Предоставлять базу данных ниже.
- Откройте Windows Azure Store.
- Нажмите на дополнение к MongoLab.
- Нажмите на надстройку MongoLab в списке дополнений, а затем нажмите « Информация о подключении» .
- Скопируйте MONGOLAB_URI в буфер обмена. Этот URI содержит имя пользователя и пароль вашей базы данных. Относитесь к ней как к конфиденциальной информации и не делитесь ею.
- Добавьте значение в список «Строки подключения» в меню «Конфигурация» веб-приложения Windows Azure:
- В качестве имени введите MONGOLAB_URI.
- В поле Value вставьте строку подключения, которую мы получили в предыдущем разделе.
- Выберите Custom в раскрывающемся списке Type (вместо SQLAzure по умолчанию).
- Запустите,
npm install mongooseчтобы получить Mongoose, драйвер узла MongoDB. - Установите хук в своем коде для получения URI соединения MongoLab из переменной среды и подключитесь:
var mongoose = require('mongoose');
...
var connectionString = process.env.CUSTOMCONNSTR_MONGOLAB_URI
...
mongoose.connect(connectionString);
Примечание. Windows Azure добавляет префикс CUSTOMCONNSTR_ к первоначально объявленной строке подключения, поэтому код ссылается на CUSTOMCONNSTR_MONGOLAB_URI. вместо MONGOLAB_URI .
Теперь перейдем к полному уроку …
Предоставление базы данных
Вы можете подписаться на полностью управляемую базу данных MongoDB, размещенную в Azure, в Магазине Windows Azure. Для этого выполните следующие действия:
- Войдите на портал управления Windows Azure.
- Нажмите Новый .
- Выберите Магазин .
- Выберите MongoLab. Вы можете найти нас в категории « Службы приложений », а также в разделе « Все» .
- Нажмите Далее . Отобразится запись магазина MongoLab.
- Выберите желаемый вариант подписки .
- Введите имя для вашей базы данных. Ваше имя может содержать только буквенно-цифровые символы, тире, точки и подчеркивания. MongoLab также требует, чтобы это имя было уникальным, поэтому вас могут попросить повторно подать запрос, если имя занято.
- Выберите нужный регион .
Важное замечание : Для максимальной производительности и безопасности мы настоятельно рекомендуем подготовить ваш надстройку MongoLab и веб-сайт Windows Azure в одном регионе. Начиная с этой даты в блоге дополнение MongoLab доступно в регионах Восточной и Западной США. - Нажмите Далее .
- Просмотрите информацию о покупке в вашем магазине и нажмите « Купить» для подтверждения.
- Кнопка прогресса на панели инструментов отображает ваш статус подготовки. Сообщение об успешном завершении отображается после завершения подготовки.
Поздравляем! MongoLab только что подготовил базу данных MongoDB в выбранном вами регионе Windows Azure. Теперь у вас есть доступ к нашему интерфейсу управления и поддержке 24/7.
Создать приложение
В этом разделе вы настроите свою среду разработки и создадите код для веб-приложения со списком основных задач, используя Node.js, Express и MongoDB. Express предоставляет инфраструктуру View Controller для узла, в то время как Mongoose является драйвером для связи с MongoDB в узле.
Настроить
Генерация лесов и установка модулей
- В командной строке создайте и перейдите в каталог списка задач . Это будет каталог вашего проекта.
- Введите следующую команду, чтобы установить экспресс.
npm install express -g
-gуказывает на глобальный режим, который мы используем, чтобы сделать экспресс- модуль доступным без указания пути к каталогу. Если вы получили сообщение об ошибке: EPERM, chmod ‘/ usr / local / bin / express’ , используйте sudo для запуска npm с более высоким уровнем привилегий.Вывод этой команды должен выглядеть примерно так:
express@2.5.9 /usr/local/lib/node_modules/express ├── mime@1.2.4 ├── mkdirp@0.3.0 ├── qs@0.4.2 └── connect@1.8.7
Чтобы создать леса, которые будут использоваться для этого приложения, используйте команду express :
express
Вывод этой команды должен выглядеть примерно так:
create : . create : ./package.json create : ./app.js create : ./public create : ./public/javascripts create : ./public/images create : ./public/stylesheets create : ./public/stylesheets/style.css create : ./routes create : ./routes/index.js create : ./views create : ./views/layout.jade create : ./views/index.jade dont forget to install dependencies: $ cd . && npm install
После выполнения этой команды у вас должно появиться несколько новых каталогов и файлов в каталоге списка задач .
Введите следующее, чтобы установить модули, описанные в
файле package.json :
npm install
Вывод этой команды должен выглядеть примерно так:
express@2.5.8 ./node_modules/express ├── mime@1.2.4 ├── qs@0.4.2 ├── mkdirp@0.3.0 └── connect@1.8.7 jade@0.26.0 ./node_modules/jade ├── commander@0.5.2 └── mkdirp@0.3.0
-
Package.json файл один из файлов , созданных с помощью экспресс — команды. Этот файл содержит список дополнительных модулей, необходимых для приложения Express. Позже, когда вы развернете это приложение на веб-сайте Windows Azure, этот файл будет использоваться для определения, какие модули необходимо установить в Windows Azure для поддержки вашего приложения.
- Затем введите следующую команду, чтобы установить модуль Mongoose локально, а также сохранить запись для него в файле package.json :
npm install mongoose --save
Вывод этой команды должен выглядеть примерно так:
mongoose@2.6.5./node_modules/mongoose ├── hooks@0.2.1└── mongodb@1.0.2
Вы можете спокойно игнорировать любое сообщение об установке синтаксического анализатора bson для C ++.
Код
Теперь, когда наша среда и леса готовы, мы расширим базовое приложение, созданное командой express , добавив файл task.js, который содержит модель для ваших задач. Вы также изменить существующий app.js и создать новый tasklist.js файл контроллера , чтобы использовать модель.
Создать модель
- В каталоге списка задач создайте новый каталог с именем models .
- В модели каталога, создать новый файл с именем task.js . Этот файл будет содержать модель для задач, созданных вашим приложением.
- Добавьте следующий код в файл task.js :
var mongoose = require('mongoose')
, Schema = mongoose.Schema;
var TaskSchema = new Schema({
itemName : String
, itemCategory : String
, itemCompleted : { type: Boolean, default: false }
, itemDate : { type: Date, default: Date.now }
});
module.exports = mongoose.model('TaskModel', TaskSchema)
- Сохраните и закройте файл task.js.
Создать контроллер
- В каталоге tasklist / маршруты создайте новый файл с именем tasklist.js и откройте его в текстовом редакторе.
- Добавьте следующий код в tasklist.js . Это загружает мангуст модуль и модели задачи определены в task.js . Функция TaskList используется для создания соединения с сервером MongoDB на основе значения соединения и предоставляет методы showTasks , addTask и completeTasks :
var mongoose = require('mongoose')
, task = require('../models/task.js');
module.exports = TaskList;
function TaskList(connection) {
mongoose.connect(connection);
}
TaskList.prototype = {
showTasks: function(req, res) {
task.find({itemCompleted: false}, function foundTasks(err, items) {
res.render('index',{title: 'My ToDo List ', tasks: items})
});
},
addTask: function(req,res) {
var item = req.body.item;
newTask = new task();
newTask.itemName = item.name;
newTask.itemCategory = item.category;
newTask.save(function savedTask(err){
if(err) {
throw err;
}
});
res.redirect('/');
},
completeTask: function(req,res) {
var completedTasks = req.body;
for(taskId in completedTasks) {
if(completedTasks[taskId]=='true') {
var conditions = { _id: taskId };
var updates = { itemCompleted: completedTasks[taskId] };
task.update(conditions, updates, function updatedTask(err) {
if(err) {
throw err;
}
});
}
}
res.redirect('/');
}
}
- Сохраните файл tasklist.js .
Изменить представление индекса
- Перейдите в каталог views и откройте файл index.jade в текстовом редакторе.
- Замените содержимое файла index.jade приведенным ниже кодом. Это определяет представление для отображения существующих задач, а также форму для добавления новых задач и маркировки существующих как выполненных.
h1= title
form(action="/completetask", method="post")
table(border="1")
tr
td Name
td Category
td Date
td Complete
each task in tasks
tr
td #{task.itemName}
td #{task.itemCategory}
- var day = task.itemDate.getDate();
- var month = task.itemDate.getMonth() + 1;
- var year = task.itemDate.getFullYear();
td #{month + "/" + day + "/" + year}
td
input(type="checkbox", name="#{task._id}", value="#{!task.itemCompleted}", checked=task.itemCompleted)
input(type="submit", value="Update tasks")
hr
form(action="/addtask", method="post")
table(border="1")
tr
td Item Name:
td
input(name="item[name]", type="textbox")
tr
td Item Category:
td
input(name="item[category]", type="textbox")
input(type="submit", value="Add item")
Сохраните и закройте
файл index.jade .
Заменить app.js
- В каталоге списка задач откройте файл app.js в текстовом редакторе. Этот файл был создан ранее с помощью команды express .
- Замените содержимое следующим кодом. Это инициализирует TaskList со строкой соединения для сервера MongoDB, добавляет функции, определенные в tasklist.js как маршруты, и запускает сервер приложений:
var express = require('express')
, routes = require('./routes')
, user = require('./routes/user')
, http = require('http')
, path = require('path');
var TaskList = require('./routes/tasklist');
var taskList = new TaskList(process.env.CUSTOMCONNSTR_MONGOLAB_URI);
var app = express();
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
});
app.configure('development', function(){
app.use(express.errorHandler());
});
app.get('/', taskList.showTasks.bind(taskList));
app.post('/addtask', taskList.addTask.bind(taskList));
app.post('/completetask', taskList.completeTask.bind(taskList));
http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
- Обратите внимание на следующий код выше:
var taskList =newTaskList(process.env.CUSTOMCONNSTR_MONGOLAB_URI);
Конструктор TaskList принимает URI соединения MongoDB. Здесь вы получаете доступ к переменной среды, которую вы настроите позже. Если у вас есть локальный экземпляр mongo, работающий в целях разработки, вы можете временно установить для этого значения значение «localhost» вместо
process.env.CUSTOMCONNSTR_MONGOLAB_URI. - Сохраните файл app.js.
Разверните приложение
Теперь, когда приложение разработано, пришло время создать веб-сайт Windows Azure для его размещения, настроить этот веб-сайт и развернуть код. Центральным в этом разделе является использование строки подключения MongoDB (URI). Вы собираетесь настроить переменную среды на своем веб-сайте с этим URI, чтобы отделить URI от вашего кода. Вы должны рассматривать URI как конфиденциальную информацию, так как она содержит учетные данные для подключения к вашей базе данных.
Шаги в этом разделе используют инструменты командной строки Windows Azure для создания нового веб-сайта Windows Azure, а затем используют Git для развертывания приложения. Для выполнения этих шагов у вас должна быть подписка Windows Azure.
Установите средство командной строки Windows Azure для Mac и Linux
Чтобы установить инструменты командной строки, используйте следующую команду:
npm install azure-cli -g
Если вы уже установили Windows Azure SDK для Node.js из Центра разработчиков Windows Azure , то инструменты командной строки уже должны быть установлены. Для получения дополнительной информации см. Средство командной строки Windows Azure для Mac и Linux .
Хотя средства командной строки Windows Azure были созданы в основном для пользователей Mac и Linux, они основаны на Node.js и должны работать в любой системе, способной работать на Node.
Импорт настроек публикации
Перед использованием инструментов командной строки в Windows Azure необходимо сначала загрузить файл, содержащий информацию о вашей подписке. Выполните следующие шаги, чтобы загрузить и импортировать этот файл.
- В командной строке введите следующую команду, чтобы запустить браузер и перейти на страницу загрузки. При появлении запроса войдите в систему, используя учетную запись, связанную с вашей подпиской.
azure account download
Загрузка файла должна начаться автоматически; если это не так, вы можете нажать на ссылку в начале страницы, чтобы загрузить файл вручную.
- После завершения загрузки файла используйте следующую команду для импорта настроек:
azure account import<path-to-file>
Укажите путь и имя файла настроек публикации, загруженного на предыдущем шаге. После завершения команды вы должны увидеть вывод, подобный следующему:
info: Executing command account import info: Found subscription: subscriptionname info: Setting default subscription to: subscriptionname warn: The '/Users/user1/.azure/publishSettings.xml' file contains sensitive information. warn: Remember to delete it now that it has been imported. info: Account publish settings imported successfully info: account iomport command OK
-
OK
- После завершения импорта вы должны удалить файл настроек публикации, так как он больше не нужен и содержит конфиденциальную информацию о вашей подписке Windows Azure.
Создайте новый веб-сайт и нажмите ваш код
Создать веб-сайт в Windows Azure очень просто. Если это ваш первый веб-сайт Windows Azure, вы должны использовать портал. Если у вас уже есть хотя бы один, перейдите к шагу 7.
- На портале Windows Azure нажмите « Создать» .
- Выберите Compute> Веб-сайт> Быстрое создание .
- Введите префикс URL. Выберите имя, которое вы предпочитаете, но имейте в виду, что оно должно быть уникальным («mymongoapp», скорее всего, будет недоступно).
- Выберите тот же регион, что и надстройка MongoLab, которую вы указали выше.
- Нажмите Создать веб-сайт .
- Когда создание веб-сайта завершится, щелкните имя веб-сайта в списке веб-сайтов. Отображается панель инструментов веб-сайта.
- Нажмите Set Up Git публикации под быстрым взглядом , и введите желаемое GIT имя пользователя и пароль. Вы будете использовать этот пароль при переходе на свой веб-сайт (на шаге 9).
- Если вы создали свой веб-сайт, используя шаги, описанные выше, следующая команда завершит процесс. Однако, если у вас уже есть несколько веб-сайтов Windows Azure, вы можете пропустить вышеуказанные шаги и создать новый веб-сайт с помощью этой же команды. Из каталога проекта вашего списка задач :
azure site create myuniquesitename --git
Замените «myuniquesitename» уникальным именем сайта для вашего сайта. Если веб-сайт создается как часть этой команды, вам будет предложено указать центр данных, в котором он будет расположен. Выберите центр данных, географически близкий к базе данных MongoLab.
--gitПараметр создает:
- локальный репозиторий git в папке списка задач , если таковой не существует.
- ГИТ-пульт под названием «лазурь», который будет использоваться для публикации приложения в Windows Azure.
- iisnode.yml файл, который содержит параметры , используемые Windows Azure для узла хост — приложений.
- файл .gitignore для предотвращения публикации папки node-modules в .git.
- После выполнения этой команды вы увидите вывод, подобный следующему. Обратите внимание, что строка, начинающаяся с « Созданный веб-сайт», содержит URL-адрес веб-сайта.
info: Executing command site create info: Using location southcentraluswebspace info: Executing `git init` info: Creating default web.config file info: Creating a new web site info: Created web site at mongodbtasklist.azurewebsites.net info: Initializing repository info: Repository initialized info: Executing `git remote add azure http://gitusername@myuniquesitename.azurewebsites.net/mongodbtasklist.git` info: site create command OK
Используйте следующие команды, чтобы добавить, а затем зафиксировать файлы в вашем локальном репозитории Git:
git add . git commit -m "adding files"
Нажмите свой код:
git push azure master
При отправке последних изменений Git-репозитория на веб-сайт Windows Azure необходимо указать, что целевая ветвь является главной, поскольку она используется для содержимого веб-сайта. Если будет предложено ввести пароль, введите пароль, который вы создали при настройке публикации git для своего веб-сайта выше.
Вы увидите вывод, похожий на следующий. По мере развертывания Windows Azure загрузит все модули npm.
Counting objects: 17, done. Delta compression using up to 8 threads. Compressing objects: 100% (13/13), done. Writing objects: 100% (17/17), 3.21 KiB, done. Total 17 (delta 0), reused 0 (delta 0) remote: New deployment received. remote: Updating branch 'master'. remote: Preparing deployment for commit id 'ef276f3042'. remote: Preparing files for deployment. remote: Running NPM. ... remote: Deploying Web.config to enable Node.js activation. remote: Deployment successful. To https://username@mongodbtasklist.azurewebsites.net/MongoDBTasklist.git * [new branch] master -> master
Вы почти закончили!
Настройте свою среду
Помните process.env.CUSTOMCONNSTR_MONGOLAB_URI в коде? Мы хотим заполнить эту переменную среды значением, предоставленным Windows Azure во время подготовки базы данных MongoLab.
Получить строку подключения MongoLab
Когда вы предоставляете базу данных MongoLab, MongoLab передает URI подключения к Windows Azure в стандартном формате строки подключения MongoDB. Это значение используется для инициации подключения MongoDB через выбранный вами драйвер MongoDB. Для получения дополнительной информации о строках соединения см. Соединения на mongodb.org. Этот URI содержит имя пользователя и пароль вашей базы данных. Относитесь к ней как к конфиденциальной информации и не делитесь ею.
Вы можете получить этот URI на портале Windows Azure, выполнив следующие действия:
- Выберите дополнения .
- Найдите сервис MongoLab в списке дополнений.
- Выберите имя вашего дополнения, чтобы перейти на страницу дополнения.
- Нажмите Информация о соединении . Ваш URI MongoLab отображает:
- Нажмите кнопку буфера обмена справа от значения MONGOLAB_URI, чтобы скопировать полное значение в буфер обмена.
Добавить строку подключения в переменные среды веб-сайта
Хотя есть возможность вставить URI MongoLab в ваш код, мы рекомендуем настроить его в среде для простоты управления. Таким образом, если URI изменяется, вы можете обновить его через портал Windows Azure, не переходя к коду.
- На портале Windows Azure выберите Веб-сайты .
- Нажмите на название веб-сайта в списке веб-сайтов. Откроется панель инструментов веб-сайта.
- Нажмите Настроить в строке меню.
- Прокрутите вниз до раздела Строки подключения.
- В качестве имени введите MONGOLAB_URI.
- В поле Value вставьте строку подключения, которую мы получили в предыдущем разделе.
- Выберите Custom в раскрывающемся списке Type (вместо SQLAzure по умолчанию ).
- Нажмите Сохранить на панели инструментов. Примечание. Windows Azure добавляет префикс CUSTOMCONNSTR_ к этой переменной, поэтому приведенный выше код ссылается на CUSTOMCONNSTR_MONGOLAB_URI.
Успех!
Запустите azure site browseиз каталога проекта, чтобы автоматически открыть браузер, или откройте браузер и вручную перейдите по URL вашего веб-сайта (myuniquesite.azurewebsites.net):
Управление базой данных
Поздравляем! Вы только что запустили приложение Node.js, поддерживаемое базой данных MongoDB, размещенной на MongoLab! Теперь, когда у вас есть база данных MongoLab, вы можете обратиться по адресу support@mongolab.com с любыми вопросами или проблемами, касающимися вашей базы данных, или для помощи с MongoDB или самим драйвером узла. Удачи там!
Чтобы получить доступ к пользовательскому интерфейсу MongoLab, выполните следующие действия:
- Выберите дополнения .
- Найдите ваш сервис MongoLab в вашем списке дополнений.
- Нажмите на название вашего дополнения, чтобы перейти на страницу дополнения.
- Нажмите Управление . Откроется новая вкладка браузера с домашней страницей базы данных MongoLab:
Отсюда вы можете выбрать конкретную коллекцию и перейти к отдельным документам. Выйдите, когда закончите.
Поздравляем! Вы только что запустили приложение Node.js, поддерживаемое базой данных MongoDB, размещенной на MongoLab! Теперь, когда у вас есть база данных MongoLab, вы можете обратиться по адресу support@mongolab.com с любыми вопросами или проблемами, касающимися вашей базы данных, или для помощи с MongoDB или самим драйвером узла.















