1. Черт возьми
С тех пор, как я вступил в контакт с MongoDB в январе 2013 года, я разработал услуги Travel Tag, систему поиска тегов Weibo, сервисы карт и услуги веб -приложений ... сценарии с использованием MongoDB были переданы из среды .NET и Java на платформу Node.js. Я все больше и больше чувствую, что node.js и mongodb очень хорошо сочетаются друг с другом. Такое ощущение, что mongodb и node.js рождаются с парой. Действительно, клиент Mongodb - это двигатель JS. Таким образом, выбор MongoDB и Node.js в качестве прототипов продукта также является очень хорошим выбором. В Интернете я столкнулся с пользователями сети, которые спрашивали о разработке MongoDB, какой драйвер является лучшим выбором. Раньше я использовал собственные драйверы, но есть много вещей, на которые можно обратить внимание при написании кода, таких как операция закрытия соединения и т. Д. Поэтому в среде разработки Node.js я рекомендую использовать здесь Mongoskin.
2. Несколько концепций, которые необходимо обсудить
(1) База данных: такая же, как реляционная база данных.
(2) Сбор: таблицы в реляционной базе данных.
(3) Документ: запись, аналогичная реляционной базе данных, на самом деле является объектом JSON.
(4) Дизайн базы данных: рекомендуется рассмотреть дизайн NOSQL и отказаться от идеи дизайна реляционных данных; Фактически, дизайн базы данных NOSQL является глубокой и необходимо постоянно практиковать в проекте.
(5) Пользовательская система: каждая база данных имеет свой собственный администратор, который может:
Кода -копия выглядит следующим образом:
Используйте dbname; db.adduser ('root_1', 'test');
(7) Рекомендуется изменить внешний порт
(8) Запустите сервис (это немного модифицировано под Win и Linux):
Кода -копия выглядит следующим образом:
mongod -dbpath "xx/mongodb/data/db" -logpath "xx/mongodb/log/mongo.log"
3. Построить инфраструктуру разработки MongoDB
(0) NPM Установите монгосин Mongoskin Mongoskin
Установка Node.js, пакет и другие механизмы здесь не представлены.
(1) Создать файл конфигурации config.json
Кода -копия выглядит следующим образом:
{
"dbname": "тест",
"Порт": "7868",
"Хост": "127.0.0.1",
«Имя пользователя»: «Тест»,
"Пароль": "Тест"
}
(2) Создать связанный с UTIL Class Mongo.js: экспорт объект DB
Кода -копия выглядит следующим образом:
var mongoskin = require ('mongoskin'),
config = require ('./../ config.json');
/*
* @DES: экспортировать модуль подключения к базе данных
* */
module.exports = (function () {
var host = config.host,
port = config.port,
dbname = config.dbname,
username = config.username,
пароль = config.password,
str = 'mongodb: //' + username + ':' + password + '@' + host + ':' + port + '/' + dbname;
var option = {
Native_parser: True
};
return mongoskin.db (str, option);
}) ();
(3) Создайте базовый класс CRUD: Чтобы уменьшить дублированный код творога, вам нужно только передать соответствующий объект JSON.
Кода -копия выглядит следующим образом:
var db = require ('./ mongo.js'),
status = require ('./ status'),
mongoskin = require ('mongoskin');
var crud = function (collection) {
this.collection = collection;
db.bind (this.collection);
};
Crud.prototype = {
/*
* @DES: создать запись
* @Model: вставленная запись, модель в формате JSON
* @callback: обратный вызов, вернуть запись успешной вставки или информации о сбое
*
* */
CREATE: FUNCTION (MODEL, CALLBACK) {
db [this.collection] .save (model, function (err, item) {
if (err) {
вернуть обратный вызов (status.fail);
}
item.status = status.success.status;
item.message = status.success.message;
вернуть обратный вызов (ITEM);
});
},
/*
* @DES: прочитайте запись
* @Query: Условия запроса, json Literal of Mongo Query
* @callback: обратный вызов, возвратные записи, которые соответствуют требованиям или сбои
*
* */
Читать: функция (запрос, обратный вызов) {
db [this.collection] .find (Query).
if (err) {
вернуть обратный вызов (status.fail);
}
var obj = {
Статус: status.success.status,
Сообщение: status.success.message,
Предметы: пункты
};
вернуть обратный вызов (OBJ);
});
},
/*
* @DES: обновить запись
* @Query: Условия запроса, JSON Literal of Mongo Query, вот _id
* @UpdateModel: модель в формате JSON, который необходимо обновить
* @callback: возвращает информацию о успехе или неудаче
*
* */
Обновление: функция (запрос, UpdateModel, Callback) {
var set = {set: updateModel};
db [this.collection] .update (Query, set, function (err) {
if (err) {
вернуть обратный вызов (status.fail);
}еще{
вернуть обратный вызов (status.success);
}
});
},
/*
* @des: удалить запись
* @Query: Условия запроса, json Literal of Mongo Query
* @callback: возвращает сообщение об отказе или успехе
*
* */
deletedata: function (Query, обратный вызов) {
db [this.collection] .remove (Query, function (err) {
if (err) {
вернуть обратный вызов (status.fail);
}
вернуть обратный вызов (status.success);
});
}
};
module.exports = crud;
(4) Постройте состояние.
Кода -копия выглядит следующим образом:
module.exports = {
/*
* Статус успеха
*
* */
успех: {
Статус: 1,
Сообщение: 'OK'
},
/*
* Неудачный статус
*
* */
Неудача: {
Статус: 0,
Сообщение: «Неудача»
},
/*
* Введенный пароль дважды не соответствует
* */
Повторите пароль: {
Статус: 0,
Сообщение: «Введенные пароли дважды противоречивы»
}
};