1. Tonterías
Desde que entré en contacto con MongoDB en enero de 2013, he desarrollado servicios de etiquetas de viaje, sistema de recuperación de etiquetas Weibo, servicios de mapas y servicios de aplicaciones web ... Los escenarios que usan MongoDB se han transferido desde el entorno .NET y Java a la plataforma Node.js. Siento cada vez más que Node.js y MongoDB se combinan muy bien entre sí. Se siente como MongoDB y Node.js nacen con un par. De hecho, el cliente de MongoDB es el motor de análisis de JS. Por lo tanto, elegir MongoDB y Node.js como prototipos de productos también es una opción muy agradable. En Internet, encontré a los internautas que preguntaban sobre el desarrollo de MongoDB, qué controlador es la mejor opción. Solía usar controladores nativos, pero hay muchas cosas a las que prestar atención al escribir código, como la operación de cierre de conexión, etc. Por lo tanto, en el entorno de desarrollo nodo.js, recomiendo usar Mongoskin aquí.
2. Varios conceptos que deben discutirse
(1) Base de datos: lo mismo que la base de datos relacional.
(2) Colección: Tablas en la base de datos relacional.
(3) Documento: un registro similar a la base de datos relacional es en realidad un objeto JSON.
(4) Diseño de la base de datos: se recomienda considerar el diseño de NoSQL y abandonar la idea de diseño de datos relacionales; De hecho, el diseño de la base de datos NoSQL es profundo y debe practicarse continuamente en el proyecto.
(5) Sistema de usuario: cada base de datos tiene su propio administrador, que puede:
La copia del código es la siguiente:
usar dbname; db.adduser ('root_1', 'test');
(7) Se recomienda cambiar el puerto externo
(8) Inicie el servicio (esto está un poco modificado en Win y Linux):
La copia del código es la siguiente:
MongoD --DBPath "xx/mongoDB/data/db" --logpath "xx/mongoDB/log/mongo.log" --logappend -auth --port 7868
3. Construir infraestructura de desarrollo de MongoDB
(0) NPM Instalar Mongoskin Instalar Mongoskin
La instalación de Node.js, el paquete y otros mecanismos no se introducen aquí.
(1) Crear archivo de configuración config.json
La copia del código es la siguiente:
{
"dbname": "prueba",
"Puerto": "7868",
"Host": "127.0.0.1",
"nombre de usuario": "prueba",
"Contraseña": "Prueba"
}
(2) Cree la clase Mongo.js: exportar un objeto DB
La copia del código es la siguiente:
var mongoskin = require ('Mongoskin'),
config = request ('./../ config.json');
/*
* @Des: Exportar el módulo de conexión de la base de datos
* */
módulo.exports = (function () {
var host = config.host,
puerto = config.port,
dbname = config.dbname,
username = config.userName,
contraseña = config.password,
str = 'mongodb: //' + username + ':' + contraseña + '@' + host + ':' + puerto + '/' + dbname;
opción var = {
national_parser: verdadero
};
return mongoskin.db (str, opción);
}) ();
(3) Construya la clase básica de CRUD: para reducir el código de cuajada duplicada, solo necesita pasar en el objeto JSON correspondiente.
La copia del código es la siguiente:
var db = require ('./ mongo.js'),
status = require ('./ status'),
Mongoskin = requerir ('Mongoskin');
var crud = function (colección) {
this.collection = colección;
db.bind (this.Collection);
};
Crud.prototype = {
/*
* @des: crear un registro
* @model: registro insertado, modelo en formato JSON
* @callback: devolución de llamada, devuelve el registro de información exitosa de inserción o falla
*
* */
create: function (modelo, devolución de llamada) {
db [this.collection] .save (modelo, function (err, item) {
if (err) {
devolver la devolución de llamada (status.fail);
}
item.status = status.success.status;
item.message = status.success.message;
devolver la devolución de llamada (elemento);
});
},
/*
* @Des: Leer un registro
* @Query: Condiciones de consulta, JSON LITERAL OF MONGO QUERY
* @Callback: devolución de llamada, devuelve registros que cumplan con los requisitos o la información de falla
*
* */
Leer: function (consulta, devolución de llamada) {
db [this.collection] .find (consulta) .toarray (function (err, elementos) {
if (err) {
devolver la devolución de llamada (status.fail);
}
var obj = {
Estado: status.success.status,
Mensaje: status.success.message,
Elementos: artículos
};
devolver la devolución de llamada (OBJ);
});
},
/*
* @Des: actualizar un registro
* @Query: Condiciones de consulta, JSON Literal of Mongo Query, aquí está _id
* @UpDateModel: modelo en formato JSON que debe actualizarse
* @callback: devuelve información de éxito o falla
*
* */
ACTUALIZACIÓN: function (Query, UpdateModel, Callback) {
var set = {set: updateModel};
db [this.collection] .Update (consulta, set, function (err) {
if (err) {
devolver la devolución de llamada (status.fail);
}demás{
devolver la devolución de llamada (status.success);
}
});
},
/*
* @Des: eliminar un registro
* @Query: Condiciones de consulta, JSON LITERAL OF MONGO QUERY
* @Callback: Devuelve el mensaje de falla o éxito
*
* */
deletedata: function (consulta, devolución de llamada) {
db [this.collection] .remove (consulta, function (err) {
if (err) {
devolver la devolución de llamada (status.fail);
}
devolver la devolución de llamada (status.success);
});
}
};
módulo.exports = crud;
(4) Build Status.json, Debido a que se requieren algunos estados para indicar el éxito y el fracaso, se puede ampliar a errores del código de verificación, errores de verificación SMS, errores de nombre de usuario, etc. en la etapa posterior.
La copia del código es la siguiente:
módulo.exports = {
/*
* Estado de éxito
*
* */
éxito: {
Estado: 1,
Mensaje: 'OK'
},
/*
* Estado fallido
*
* */
Fallar: {
Estado: 0,
Mensaje: 'Fail'
},
/*
* La contraseña ingresada dos veces es inconsistente
* */
Repita la contraseña: {
Estado: 0,
Mensaje: 'Las contraseñas ingresadas dos veces son inconsistentes'
}
};