Сегодня я собираюсь показать вам, как создать простое приложение, использующее Nodejs , Mongoose , Express и MongoDB , которое сохранит некоторые данные и вернет их. Он также будет иметь простой файл конфигурации, чтобы я мог настроить свои маршруты в Express. Для тех, кто не знает, Mongoose — это инструмент для моделирования объектов MongoDB, разработанный для работы в асинхронной среде, а Express — основанная на Sinatra инфраструктура веб-разработки для node.js.
Я устанавливаю и запускаю это на Ubuntu 11.x. Если вы используете OS X, вам может потребоваться внести некоторые изменения. На чистой Ubuntu 11.x я установил Node.js и NPM (менеджер пакетов узлов).
Установка Node (текущая версия на дату этой статьи v.0.6.6 , используйте пакет apt, если хотите) и NPM:
$ sudo apt-get update $ sudo apt-get install git-core curl build-essential openssl libssl-dev $ mkdir nodejs && cd nodejs $ git clone https://github.com/joyent/node.git && cd node $ git checkout v0.6.6 $ ./configure $ sudo make install $ node -v $ curl http://npmjs.org/install.sh | sudo sh $ npm -v
Теперь установите пакеты, которые нам понадобятся:
$ npm install mongoose $ npm install express
Примечание: обратите внимание, что есть плагин express-mongoose, но я не буду использовать его для этого проекта.
Установите MongoDB с инструкциями на их сайте. Для Ubuntu это довольно просто .
Как только MongoDB будет установлен и запущен, вы готовы написать код. Там будет два файла, один для конфигурации и один для приложения.
Примечание. Существуют шаблоны JavaScript / Nodejs и рекомендации, которым вы можете следовать, этот код должен быть простым и небольшим по размеру. Отрегулируйте так, как считаете нужным.
Содержимое config.js
var config = {}; config.routes = {}; config.routes.feed = '/user'; module.exports = config;
Содержимое myapp.js
var express = require('express') app = express.createServer(), config = require('./config'), mongoose = require('mongoose'), db = mongoose.connect('mongodb://localhost/mydb'), Schema = mongoose.Schema; var User = new Schema({ username: String, title: String }); var userModel = mongoose.model('User', User); var user = new userModel(); user.username = 'Chad'; user.title = 'Senior Developer'; user.save(function(err) { if (err) throw err; console.log('User saved, starting server...'); app.listen(8080); }); app.configure( function() { console.log('I will be listening on: ' + config.routes.feed); }); app.get(config.routes.feed, function(req, res) { res.contentType('application/json'); userModel.findOne({'username': 'Chad'}, function(err, user) { if (user != null) { console.log('Found the User:' + user.username); res.send(JSON.stringify(user)); } }); });
Запустите код:
$ node myapp.js
Откройте веб-браузер и перейдите по следующему адресу: http: // localhost: 8080 / user /
Вы должны вернуть немного JSON.
{"title":"Senior Developer","username":"Chad","id":"4eh21far10597eb52z000001"}
Код Тео довольно прост. Мы вводим необходимые библиотеки, объявляем схему и проверяем, что хотя бы одна запись находится в MongoDB перед запуском сервера. Кроме того, вы можете очень легко сделать это без Express, поскольку это такой тривиальный пример.
Если ваш веб-браузер отказывается открывать содержимое, просто измените эту строку кода:
res.contentType('application/json');
Для того, чтобы:
res.contentType('text/plain');
— просто не забудьте изменить это обратно, если вы действительно хотите передать результаты JSON целевому слушателю.