1. Non-sens
Depuis janvier 2013, j'ai été exposé à mongodb pour le développement et j'ai développé des services de balises de voyage, des systèmes de récupération de balises Weibo, des services de cartographie et des services d'application Web... Le scénario d'utilisation de MongoDB a été transféré des environnements .NET et JAVA. à la plateforme node.js. Je sens de plus en plus que la combinaison de Node.js et de mongodb est très bonne. On a l'impression que mongodb et node.js correspondent parfaitement. En effet, le client de mongodb est le moteur d'analyse de JS. Par conséquent, choisir mongodb et node.js pour les prototypes de produits est également un très bon choix. Sur Internet, j'ai rencontré des internautes qui me demandaient quel pilote était le meilleur pour le développement de mongodb. J'ai toujours utilisé le pilote natif auparavant, mais il y a beaucoup de choses à prendre en compte lors de l'écriture de code, comme l'opération de fermeture de la connexion, etc. .. Par conséquent, dans node.js Dans l'environnement de développement, je recommande d'utiliser mongoskin.
2. Plusieurs notions qui doivent être discutées
(1) Base de données : identique à la base de données relationnelle.
(2) Ensemble : Table dans une base de données relationnelle.
(3) Document : analogue aux enregistrements d'une base de données relationnelle, mais en fait un objet JSON.
(4) Conception de bases de données : il est recommandé d'envisager la conception NoSQL et d'abandonner les idées de conception de données relationnelles. En fait, la conception de bases de données NoSQL est vaste et approfondie et doit être continuellement mise en pratique dans les projets ;
(5) Système utilisateur : Chaque base de données possède son propre administrateur, qui peut :
3. Construire une infrastructure de développement mongodb
(0) npm installer mongoskin Installer mongoskin
L'installation, le package et d'autres mécanismes de Node.js ne sont pas présentés ici.
(1) Créer le fichier de configuration config.json
(2) Créer une classe mongo.js liée à l'utilitaire : exporter un objet DB
/*
* @des : Module de connexion à la base de données d'exportation
* */
module.exports = (fonction(){
var hôte = config.host,
port = config.port,
dbName = config.dbname,
userName = config.username,
Mot de passe = config.password,
str = 'mongodb://' userName ':' mot de passe '@' host ':' port '/' dbName;
option var = {
native_parser : vrai
};
return mongoskin.db(str, option);
})();
(3) Construisez la classe de base de CRUD : afin de réduire le code CURD répété, il vous suffit de transmettre l'objet JSON approprié
var CRUD = fonction (collection) {
This.collection = collection;
db.bind(this.collection);
};
CRUD.prototype = {
/*
* @des : Créer un enregistrement
* @model : Enregistrement inséré, modèle au format JSON
* @callback : rappel, renvoie les enregistrements insérés avec succès ou les informations d'échec
*
* */
Créer : fonction (modèle, rappel){
db[this.collection].save(model, function(err, item){
si (erreur) {
return callback(status.fail);
}
Item.status = status.success.status;
Item.message = status.success.message;
return callback(item);
});
},
/*
* @des : Lire un enregistrement
* @query : conditions de requête, littéral JSON pour la requête Mongo
* @callback : rappel, renvoie les enregistrements qui répondent aux exigences ou aux informations d'échec
*
* */
Lire : fonction (requête, rappel) {
db[this.collection].find(query).toArray(function(err, items){
si(erreur){
return callback(status.fail);
}
var obj = {
statut : statut.success.status,
message : status.success.message,
articles : articles
};
return callback(obj);
});
},
/*
* @des : Mettre à jour une fiche
* @query : condition de requête, littéral JSON pour la requête Mongo, voici _id
* @updateModel : Modèle au format JSON qui doit être mis à jour
* @callback : renvoyer les informations de réussite ou d'échec
*
* */
Mise à jour : fonction (requête, updateModel, rappel){
var set = {set : updateModel};
db[this.collection].update(query, set, function(err){
si(erreur){
return callback(status.fail);
}autre{
return callback(status.success);
}
});
},
/*
* @des : Supprimer un enregistrement
* @query : conditions de requête, littéral JSON pour la requête Mongo
* @callback : renvoie les informations d'échec ou de réussite
*
* */
deleteData : fonction (requête, rappel){
db[this.collection].remove(query, function(err){
si(erreur){
return callback(status.fail);
}
return callback(status.success);
});
>
};
module.exports = CRUD;
(4) Créez status.json, car un certain statut est nécessaire pour indiquer le succès et l'échec, qui peut ensuite être étendu pour inclure les erreurs de code de vérification, les erreurs de vérification par SMS, les erreurs de nom d'utilisateur, etc.
/*
* Statut d'échec
*
* */
échouer : {
statut : 0,
message : 'ÉCHEC'
},
/*
* Les mots de passe saisis deux fois sont incohérents
* */
Répéter le mot de passe : {
statut : 0,
message : 'Les mots de passe saisis deux fois sont incohérents'
>
};