1. Non-sens
Depuis que je suis entré en contact avec MongoDB en janvier 2013, j'ai développé des services de voyage, le système de récupération de tag de Weibo, les services de cartes et les services d'applications Web ... Les scénarios utilisant MongoDB ont été transférés de l'environnement .NET et Java à la plate-forme Node.js. Je pense de plus en plus que Node.js et MongoDB sont très bien combinés les uns avec les autres. On dirait que MongoDB et Node.js sont nés avec une paire. En effet, le client de Mongodb est le moteur d'analyse de JS. Par conséquent, le choix de MongoDB et Node.js comme prototypes de produits est également un très bon choix. Sur Internet, j'ai rencontré des internautes en me demandant le développement de MongoDB, quel conducteur est le meilleur choix. J'utilisais des pilotes natifs, mais il y a beaucoup de choses à faire attention lors de l'écriture de code, comme l'opération de fermeture de la connexion, etc. Par conséquent, dans l'environnement de développement Node.js, je recommande d'utiliser Mongoskin ici.
2. Plusieurs concepts qui doivent être discutés
(1) Base de données: la même chose que la base de données relationnelle.
(2) Collection: tableaux dans la base de données relationnelle.
(3) Document: Un enregistrement similaire à la base de données relationnelle est en fait un objet JSON.
(4) Conception de la base de données: il est recommandé de considérer la conception du nosql et d'abandonner l'idée de conception des données relationnelles; En fait, la conception de la base de données NoSQL est profonde et doit être pratiquée en permanence dans le projet.
(5) Système utilisateur: chaque base de données a son propre administrateur, qui peut:
La copie de code est la suivante:
utiliser dbname; db.adDuser ('root_1', 'test');
(7) Il est recommandé de modifier le port externe
(8) Démarrez le service (c'est un peu modifié sous Win et Linux):
La copie de code est la suivante:
Mongod --dbpath "xx / mongodb / data / db" --logpath "xx / mongodb / log / mongo.log" --ligAPPEnd -Auth --port 7868
3. Construire une infrastructure de développement MongoDB
(0) Installer Mongoskin Installer Mongoskin
L'installation, le package et d'autres mécanismes de Node.js ne sont pas introduits ici.
(1) Créer un fichier de configuration config.json
La copie de code est la suivante:
{
"dbname": "test",
"Port": "7868",
"hôte": "127.0.0.1",
"nom d'utilisateur": "test",
"mot de passe": "test"
}
(2) Créer des classes liées à Util Mongo.js: Exporter un objet DB
La copie de code est la suivante:
var mongoskin = require ('mongoskin'),
config = requis ('./../ config.json');
/ *
* @DES: exporter le module de connexion de la base de données
* * /
module.exports = (function () {
var host = config.host,
port = config.port,
dbname = config.dbname,
username = config.username,
mot de passe = config.password,
str = 'mongodb: //' + nom d'utilisateur + ':' + mot de passe + '@' + hôte + ':' + port + '/' + dbname;
Var Option = {
native_parser: vrai
};
return Mongoskin.db (STR, option);
}) ();
(3) Créez la classe de base de Crud: Afin de réduire le code de caillé en double, il vous suffit de passer dans l'objet JSON pertinent.
La copie de code est la suivante:
var db = require ('./ Mongo.js'),
status = require ('./ status'),
Mongoskin = Besoin («Mongoskin»);
var crud = fonction (collection) {
this.collection = collection;
db.bind (this.collection);
};
Crud.prototype = {
/ *
* @DES: créez un enregistrement
* @Model: enregistrement inséré, modèle au format JSON
* @Callback: rappel, renvoyez l'enregistrement des informations réussies d'insertion ou d'échec
*
* * /
Create: function (modèle, rappel) {
db [this.collection] .save (modèle, fonction (err, item) {
if (err) {
return callback (status.fail);
}
item.status = status.success.status;
item.sessage = status.success.mesage;
return rappel (item);
});
},
/ *
* @DES: Lisez un enregistrement
* @Query: Conditions de requête, JSON Litteral of Mongo Query
* @Callback: rappel, enregistrements de retour qui répondent aux exigences ou aux informations d'échec
*
* * /
lire: fonction (requête, rappel) {
db [this.collection] .find (query) .toArray (fonction (err, items) {
if (err) {
return callback (status.fail);
}
var obj = {
Statut: status.success.status,
Message: status.success.sessage,
Articles: Articles
};
RETOUR RAPPEL (OBJ);
});
},
/ *
* @DES: Mettez à jour un enregistrement
* @Query: Conditions de requête, json littéral de Mongo Query, voici _id
* @upDateModel: modèle au format JSON qui doit être mis à jour
* @Callback: renvoie des informations sur le succès ou l'échec
*
* * /
Mise à jour: fonction (requête, UpdateModel, rappel) {
var set = {set: updateModel};
db [this.collection] .update (query, set, function (err) {
if (err) {
return callback (status.fail);
}autre{
return rappel (status.success);
}
});
},
/ *
* @DES: supprimer un record
* @Query: Conditions de requête, JSON Litteral of Mongo Query
* @Callback: renvoie le message d'échec ou de succès
*
* * /
DeleteData: fonction (requête, rappel) {
db [this.collection] .remove (query, fonction (err) {
if (err) {
return callback (status.fail);
}
return rappel (status.success);
});
}
};
module.exports = crud;
(4) build status.json, car certains statuts sont nécessaires pour indiquer le succès et l'échec, il peut être étendu aux erreurs de code de vérification, aux erreurs de vérification SMS, aux erreurs de nom d'utilisateur, etc. à l'étape ultérieure.
La copie de code est la suivante:
module.exports = {
/ *
* Statut de réussite
*
* * /
succès: {
Statut: 1,
Message: 'OK'
},
/ *
* Statut échoué
*
* * /
Échouer: {
Statut: 0,
Message: «échouer»
},
/ *
* Le mot de passe entré deux fois est incohérent
* * /
Répéter le mot de passe: {
Statut: 0,
Message: «Les mots de passe entrés deux fois sont incohérents»
}
};