Outils pour utilisateurs

Outils du site


web:javascript:mean_stack:mongoose

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
web:javascript:mean_stack:mongoose [2014/12/28 21:39] – [Options de l'update] sgariepyweb:javascript:mean_stack:mongoose [2022/02/02 00:42] (Version actuelle) – modification externe 127.0.0.1
Ligne 9: Ligne 9:
  
 On peut utiliser les options ''-g'' ou ''%%--save%%'' si nécessaire.  Voir la rubrique sur ''[[web:javascript:nodejs#npm|npm]]'' pour plus de détails. On peut utiliser les options ''-g'' ou ''%%--save%%'' si nécessaire.  Voir la rubrique sur ''[[web:javascript:nodejs#npm|npm]]'' pour plus de détails.
- 
- 
  
 ====== Schema ====== ====== Schema ======
- 
- 
- 
- 
- 
- 
  
 ===== Simple ===== ===== Simple =====
Ligne 43: Ligne 35:
   isActive:  Boolean   isActive:  Boolean
 }); });
 +</code>
 +
 +==== Valeurs par défaut ====
 +
 +<code javascript>
 +  created: {
 +    type: Date,
 +    default: Date.now
 +  }
 </code> </code>
  
Ligne 85: Ligne 86:
  
 Il faut remarquer que la propriété ''address'' de ''customerSchema'' est un tableau avec ''addressSchema''. Il faut remarquer que la propriété ''address'' de ''customerSchema'' est un tableau avec ''addressSchema''.
- 
  
  
Ligne 97: Ligne 97:
 var noIdSchema = new Schema({ name: String }, { _id: false }); var noIdSchema = new Schema({ name: String }, { _id: false });
 </code> </code>
- 
- 
  
 ==== Propriété type ==== ==== Propriété type ====
Ligne 141: Ligne 139:
  
 ===== Création ===== ===== Création =====
- 
  
 La création d'un modèle se fait avec ''mongoose.model()'' Le premier argument de ''model()'' est le nom du modèle et le second est le schema.  Normalement, le nom du modèle est singulier et sera //plurialisé// lors de la création de la collection sur MongoDB. La création d'un modèle se fait avec ''mongoose.model()'' Le premier argument de ''model()'' est le nom du modèle et le second est le schema.  Normalement, le nom du modèle est singulier et sera //plurialisé// lors de la création de la collection sur MongoDB.
Ligne 174: Ligne 171:
  
  
-====== Requêtes ======+===== Requêtes =====
  
  
-===== find =====+==== find ====
  
 La signature de ''find()'' : La signature de ''find()'' :
Ligne 223: Ligne 220:
  
  
-===== findOne =====+==== findOne ====
  
  
Ligne 247: Ligne 244:
  
  
-===== findById =====+==== findById ====
  
 Signature : Signature :
Ligne 284: Ligne 281:
  
  
-===== Opérateurs de comparaison =====+==== Opérateurs de comparaison ====
  
 Des opérateurs peuvent être utilisés dans les requêtes pour affiner les résultats.  Ce sont les mêmes qu'utilisés dans [[bases_de_donnees:mongodb:toc|MongoDB]]. Des opérateurs peuvent être utilisés dans les requêtes pour affiner les résultats.  Ce sont les mêmes qu'utilisés dans [[bases_de_donnees:mongodb:toc|MongoDB]].
Ligne 304: Ligne 301:
 </code> </code>
  
-===== where =====+==== where ====
  
 Au lieu d'utiliser une méthode ''find()'' comme celle-ci : Au lieu d'utiliser une méthode ''find()'' comme celle-ci :
Ligne 333: Ligne 330:
  
  
-====== Mise à jour ======+===== Mise à jour =====
  
 Pour mettre à jour un document, on peut le récupérer et le sauvegarder dans le //callback// : Pour mettre à jour un document, on peut le récupérer et le sauvegarder dans le //callback// :
Ligne 360: Ligne 357:
 </code> </code>
  
-===== Options de l'update =====+==== Options de l'update ====
  
 ^ Option  ^ Description  ^ Default Value  ^ ^ Option  ^ Description  ^ Default Value  ^
Ligne 381: Ligne 378:
 </code> </code>
  
-====== Suppression ======+ 
 +==== findByIdAndUpdate ===
 + 
 + 
 +^ Option  ^ Description  ^ Default Value  ^ 
 +| new  | Set to true to return the modified document rather than the original.  | True  | 
 +| upsert  | Create the document if it does not match  | False  | 
 +| select  | Specify the document fields to return  |  | 
 + 
 + 
 + 
 + 
 +===== Suppression =====
  
 Signature Signature
-  +  Model.remove(conditions, [callback]) 
 + 
 + 
 + 
 + 
 +<code javascript> 
 +var condition = { memberName: 'Mary' }; 
 + 
 +Standup.remove(condition, function(err) { 
 +  // code callback 
 +}); 
 +</code> 
 + 
 +Supprimer tous les documents qui sont créés le ou après le 31 octobre 2014: 
 +<code javascript> 
 +var gteDate = new Date(2014, 10, 31); 
 + 
 +Standup.remove({ createdOn: { $gte: gteDate }}, function (err) { 
 +  // code callback 
 +}); 
 +</code> 
 + 
 +Suppression sans callback : 
 + 
 +<code javascript> 
 +var query = Standup.remove({ createdOn: { $gte: gteDate }}); 
 +query.exec(); 
 +</code> 
 + 
 + 
 +==== findByIdAndRemove ==== 
 + 
 + 
 +^ Option  ^ Description  ^ Default Value  ^ 
 +| select  | Specify the document fields to return  |  | 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 +===== Autres exemples de requêtes ===== 
 + 
 +<code javascript> 
 +var query = Standup.find(); 
 + 
 +query.sort({ createdOn: 'desc' }) 
 +     .limit(10) 
 +     .exec(function(err, results) { 
 +       // code callback 
 +     }); 
 +</code> 
 +====== Validation ====== 
 + 
 + 
 +^ Schema Type  ^ Built-in Validators  ^^^ 
 +| String  | required  | enum  | match  | 
 +| Number  | required  | min  | max  | 
 +| Date  | required  | | | 
 +| Buffer  | required | | | 
 +| Boolean  | required | | | 
 +| Mixed  | required | | | 
 +| ObjectId  | required | | | 
 +| Array   | required | | | 
 + 
 +===== Validation required ===== 
 + 
 + 
 +Exemple de schema : 
 + 
 +<code javascript> 
 +var customerSchema = new Schema({ 
 +  name: { type: String, required: true }, address: String, 
 +  city: String, 
 +  state: String, 
 +  country: String, 
 +  zipCode: Number, 
 +  createdOn: Date, 
 +  isActive: Boolean 
 +}); 
 +</code> 
 + 
 + 
 +Une fois le schema définit, on peut préciser une validation avec ''required()''. La signature est: 
 +  required(required, [message]) 
 + 
 + 
 +<code javascript> 
 +customerSchema.path('city').required(true, ‘Oops! Supply a city.’); 
 +</code> 
 + 
 + 
 +===== Validation match ===== 
 + 
 +<code javascript> 
 +var reMatch = /[a-zA-Z]/; 
 +var customerSchema = new Schema({ 
 +  name: { type: String, 
 +          required: true, 
 +          match: reMatch }, 
 +         // etc... 
 +}); 
 +</code> 
 + 
 + 
 +===== Validation enum ===== 
 + 
 +<code javascript> 
 +var impediments = ['none', 'minor', 'blocking', 'severe']; 
 + 
 +var standupSchema = new Schema({ 
 +  // abbreviated... 
 +  impediment: { 
 +    type: String, 
 +    required: true, 
 +    enum: impediments 
 +  } 
 +}); 
 +</code> 
 + 
 + 
 + 
 +===== Validation min et max ===== 
 + 
 + 
 +<code javascript> 
 +var customerSchema = new Schema({ 
 +  name: String, 
 +  discount: { type: Number, min: 5 } 
 +}); 
 + 
 +var customerSchema = new Schema({ 
 +  name: String, 
 +  discount: { type: Number, max: 60 } 
 +}); 
 + 
 +var customerSchema = new Schema({ 
 +  name: String, 
 +  discount: { type: Number, min: 5, max: 60 } 
 +}); 
 +</code> 
 + 
 +===== Validation personnalisée ===== 
 + 
 +Une validation personnalisée peut être spécifiée avec ''validate'' L'important, c'est que la fonction du validateur retourne ''true'' ou ''false'', indiquant que la validation est correcte ou non. 
 + 
 +<code javascript> 
 +var sizeValidator = [ 
 +  function (val) { 
 +    return (val.length > 0 && val.length <= 50) 
 +  }, 
 +  // Custom error text... 
 +  'String must be between 1 and 50 characters long' 
 +]; 
 + 
 +var personSchema = new Schema({ 
 +  firstName: { type: String, required: true, validate: sizeValidator }, 
 +  lastName: { type: String, required: true, validate: sizeValidator }, 
 +  status: { type: String, required: true, default: 'Alive'
 +}); 
 + 
 +var Person = new mongoose.model('Person', personSchema); 
 + 
 +var newPerson = new Person( { firstName: 'John', lastName: 'Doe' } ); 
 + 
 +newPerson.save(function (err) { 
 +  if (err) return handleError(err); 
 +  // saved the person document! 
 +}); 
 +</code> 
 + 
  
  
  
  
web/javascript/mean_stack/mongoose.1419799172.txt.gz · Dernière modification : 2022/02/02 00:43 (modification externe)