Node.js
Bibliothèque Mongoose
Recherche…
Connectez-vous à MongoDB en utilisant Mongoose
Tout d'abord, installez Mongoose avec:
npm install mongoose
Ensuite, ajoutez-le à server.js
tant que dépendances:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
Ensuite, créez le schéma de base de données et le nom de la collection:
var schemaName = new Schema({
request: String,
time: Number
}, {
collection: 'collectionName'
});
Créez un modèle et connectez-vous à la base de données:
var Model = mongoose.model('Model', schemaName);
mongoose.connect('mongodb://localhost:27017/dbName');
Ensuite, démarrez MongoDB et exécutez server.js
utilisant node server.js
Pour vérifier si nous avons réussi à nous connecter à la base de données, nous pouvons utiliser les événements open
, error
de l'objet mongoose.connection
.
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
// we're connected!
});
Enregistrer les données sur MongoDB en utilisant les routes Mongoose et Express.js
Installer
D'abord, installez les paquets nécessaires avec:
npm install express cors mongoose
Code
Ensuite, ajoutez des dépendances à votre fichier server.js
, créez le schéma de base de données et le nom de la collection, créez un serveur Express.js et connectez-vous à MongoDB:
var express = require('express');
var cors = require('cors'); // We will use CORS to enable cross origin domain requests.
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var app = express();
var schemaName = new Schema({
request: String,
time: Number
}, {
collection: 'collectionName'
});
var Model = mongoose.model('Model', schemaName);
mongoose.connect('mongodb://localhost:27017/dbName');
var port = process.env.PORT || 8080;
app.listen(port, function() {
console.log('Node.js listening on port ' + port);
});
Ajoutez maintenant les routes Express.js que nous utiliserons pour écrire les données:
app.get('/save/:query', cors(), function(req, res) {
var query = req.params.query;
var savedata = new Model({
'request': query,
'time': Math.floor(Date.now() / 1000) // Time of save the data in unix timestamp format
}).save(function(err, result) {
if (err) throw err;
if(result) {
res.json(result)
}
})
})
Ici, la variable de query
sera le paramètre <query>
de la requête HTTP entrante, qui sera enregistrée dans MongoDB:
var savedata = new Model({
'request': query,
//...
Si une erreur survient lors de la tentative d'écriture sur MongoDB, vous recevrez un message d'erreur sur la console. Si tout est réussi, vous verrez les données enregistrées au format JSON sur la page.
//...
}).save(function(err, result) {
if (err) throw err;
if(result) {
res.json(result)
}
})
//...
Maintenant, vous devez démarrer MongoDB et exécuter votre fichier server.js
en utilisant node server.js
.
Usage
Pour l'utiliser pour enregistrer des données, accédez à l'URL suivante dans votre navigateur:
http://localhost:8080/save/<query>
Où <query>
est la nouvelle requête que vous souhaitez enregistrer.
Exemple:
http://localhost:8080/save/JavaScript%20is%20Awesome
Sortie au format JSON:
{
__v: 0,
request: "JavaScript is Awesome",
time: 1469411348,
_id: "57957014b93bc8640f2c78c4"
}
Rechercher des données dans MongoDB en utilisant les routes Mongoose et Express.js
Installer
D'abord, installez les paquets nécessaires avec:
npm install express cors mongoose
Code
Ensuite, ajoutez des dépendances à server.js
, créez le schéma de base de données et le nom de la collection, créez un serveur Express.js et connectez-vous à MongoDB:
var express = require('express');
var cors = require('cors'); // We will use CORS to enable cross origin domain requests.
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var app = express();
var schemaName = new Schema({
request: String,
time: Number
}, {
collection: 'collectionName'
});
var Model = mongoose.model('Model', schemaName);
mongoose.connect('mongodb://localhost:27017/dbName');
var port = process.env.PORT || 8080;
app.listen(port, function() {
console.log('Node.js listening on port ' + port);
});
Ajoutez maintenant les routes Express.js que nous utiliserons pour interroger les données:
app.get('/find/:query', cors(), function(req, res) {
var query = req.params.query;
Model.find({
'request': query
}, function(err, result) {
if (err) throw err;
if (result) {
res.json(result)
} else {
res.send(JSON.stringify({
error : 'Error'
}))
}
})
})
Supposons que les documents suivants figurent dans la collection du modèle:
{
"_id" : ObjectId("578abe97522ad414b8eeb55a"),
"request" : "JavaScript is Awesome",
"time" : 1468710551
}
{
"_id" : ObjectId("578abe9b522ad414b8eeb55b"),
"request" : "JavaScript is Awesome",
"time" : 1468710555
}
{
"_id" : ObjectId("578abea0522ad414b8eeb55c"),
"request" : "JavaScript is Awesome",
"time" : 1468710560
}
Et le but est de trouver et d’afficher tous les documents contenant "JavaScript is Awesome"
sous la clé "request"
.
Pour cela, démarrez MongoDB et exécutez server.js
avec node server.js
:
Usage
Pour l'utiliser pour rechercher des données, accédez à l'URL suivante dans un navigateur:
http://localhost:8080/find/<query>
Où <query>
est la requête de recherche.
Exemple:
http://localhost:8080/find/JavaScript%20is%20Awesome
Sortie:
[{
_id: "578abe97522ad414b8eeb55a",
request: "JavaScript is Awesome",
time: 1468710551,
__v: 0
},
{
_id: "578abe9b522ad414b8eeb55b",
request: "JavaScript is Awesome",
time: 1468710555,
__v: 0
},
{
_id: "578abea0522ad414b8eeb55c",
request: "JavaScript is Awesome",
time: 1468710560,
__v: 0
}]
Recherche de données dans MongoDB à l'aide de Mongoose, Express.js Routes et $ text Operator
Installer
D'abord, installez les paquets nécessaires avec:
npm install express cors mongoose
Code
Ensuite, ajoutez des dépendances à server.js
, créez le schéma de base de données et le nom de la collection, créez un serveur Express.js et connectez-vous à MongoDB:
var express = require('express');
var cors = require('cors'); // We will use CORS to enable cross origin domain requests.
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var app = express();
var schemaName = new Schema({
request: String,
time: Number
}, {
collection: 'collectionName'
});
var Model = mongoose.model('Model', schemaName);
mongoose.connect('mongodb://localhost:27017/dbName');
var port = process.env.PORT || 8080;
app.listen(port, function() {
console.log('Node.js listening on port ' + port);
});
Ajoutez maintenant les routes Express.js que nous utiliserons pour interroger les données:
app.get('/find/:query', cors(), function(req, res) {
var query = req.params.query;
Model.find({
'request': query
}, function(err, result) {
if (err) throw err;
if (result) {
res.json(result)
} else {
res.send(JSON.stringify({
error : 'Error'
}))
}
})
})
Supposons que les documents suivants figurent dans la collection du modèle:
{
"_id" : ObjectId("578abe97522ad414b8eeb55a"),
"request" : "JavaScript is Awesome",
"time" : 1468710551
}
{
"_id" : ObjectId("578abe9b522ad414b8eeb55b"),
"request" : "JavaScript is Awesome",
"time" : 1468710555
}
{
"_id" : ObjectId("578abea0522ad414b8eeb55c"),
"request" : "JavaScript is Awesome",
"time" : 1468710560
}
Et que le but est de trouver et d’afficher tous les documents ne contenant que le mot "JavaScript"
sous la clé "request"
.
Pour ce faire, créez d'abord un index de texte pour "request"
dans la collection. Pour cela, ajoutez le code suivant à server.js
:
schemaName.index({ request: 'text' });
Et remplacer:
Model.find({
'request': query
}, function(err, result) {
Avec:
Model.find({
$text: {
$search: query
}
}, function(err, result) {
Ici, nous utilisons $search
opérateurs $text
et $search
MongoDB pour rechercher tous les documents de la collection collectionName
qui contient au moins un mot de la requête de recherche spécifiée.
Usage
Pour l'utiliser pour rechercher des données, accédez à l'URL suivante dans un navigateur:
http://localhost:8080/find/<query>
Où <query>
est la requête de recherche.
Exemple:
http://localhost:8080/find/JavaScript
Sortie:
[{
_id: "578abe97522ad414b8eeb55a",
request: "JavaScript is Awesome",
time: 1468710551,
__v: 0
},
{
_id: "578abe9b522ad414b8eeb55b",
request: "JavaScript is Awesome",
time: 1468710555,
__v: 0
},
{
_id: "578abea0522ad414b8eeb55c",
request: "JavaScript is Awesome",
time: 1468710560,
__v: 0
}]
Index dans les modèles.
MongoDB prend en charge les index secondaires. Dans Mongoose, nous définissons ces index dans notre schéma. La définition d'index au niveau du schéma est nécessaire lorsque vous devez créer des index composés.
Connexion Mongoose
var strConnection = 'mongodb://localhost:27017/dbName';
var db = mongoose.createConnection(strConnection)
Créer un schéma de base
var Schema = require('mongoose').Schema;
var usersSchema = new Schema({
username: {
type: String,
required: true,
unique: true
},
email: {
type: String,
required: true
},
password: {
type: String,
required: true
},
created: {
type: Date,
default: Date.now
}
});
var usersModel = db.model('users', usersSchema);
module.exports = usersModel;
Par défaut, mongoose ajoute deux nouveaux champs à notre modèle, même s'ils ne sont pas définis dans le modèle. Ces champs sont:
_id
Mongoose attribue à chacun de vos schémas un champ _id par défaut si l'un d'entre eux n'est pas transmis au constructeur de schéma. Le type attribué est un ObjectId qui coïncide avec le comportement par défaut de MongoDB. Si vous ne voulez pas ajouter d'id à votre schéma, vous pouvez le désactiver en utilisant cette option.
var usersSchema = new Schema({
username: {
type: String,
required: true,
unique: true
}, {
_id: false
});
__v ou versionKey
La versionKey est une propriété définie sur chaque document lors de sa création par Mongoose. Cette valeur de clé contient la révision interne du document. Le nom de cette propriété de document est configurable.
Vous pouvez facilement désactiver ce champ dans la configuration du modèle:
var usersSchema = new Schema({
username: {
type: String,
required: true,
unique: true
}, {
versionKey: false
});
Index composés
Nous pouvons créer d’autres index que ceux créés par Mongoose.
usersSchema.index({username: 1 });
usersSchema.index({email: 1 });
Dans ce cas, notre modèle a deux autres index, un pour le nom d'utilisateur du champ et un autre pour le champ email. Mais nous pouvons créer des index composés.
usersSchema.index({username: 1, email: 1 });
Impact sur la performance de l'index
Par défaut, mongoose appelle toujours séquentiellement assureIndex pour chaque index et émet un événement 'index' sur le modèle lorsque tous les appels à efficientIndex ont abouti ou en cas d'erreur.
Dans MongoDB EnsureIndex est obsolète depuis la version 3.0.0, est maintenant un alias pour createIndex.
Il est recommandé de désactiver le comportement en définissant l'option autoIndex de votre schéma sur false ou globalement sur la connexion en définissant l'option config.autoIndex sur false.
usersSchema.set('autoIndex', false);
Fonctions utiles de Mongoose
Mongoose contient des fonctions intégrées basées sur find()
.
doc.find({'some.value':5},function(err,docs){
//returns array docs
});
doc.findOne({'some.value':5},function(err,doc){
//returns document doc
});
doc.findById(obj._id,function(err,doc){
//returns document doc
});
trouver des données dans mongodb en utilisant des promesses
Installer
D'abord, installez les paquets nécessaires avec:
npm install express cors mongoose
Code
Ensuite, ajoutez des dépendances à server.js
, créez le schéma de base de données et le nom de la collection, créez un serveur Express.js et connectez-vous à MongoDB:
var express = require('express');
var cors = require('cors'); // We will use CORS to enable cross origin domain requests.
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var app = express();
var schemaName = new Schema({
request: String,
time: Number
}, {
collection: 'collectionName'
});
var Model = mongoose.model('Model', schemaName);
mongoose.connect('mongodb://localhost:27017/dbName');
var port = process.env.PORT || 8080;
app.listen(port, function() {
console.log('Node.js listening on port ' + port);
});
app.use(function(err, req, res, next) {
console.error(err.stack);
res.status(500).send('Something broke!');
});
app.use(function(req, res, next) {
res.status(404).send('Sorry cant find that!');
});
Ajoutez maintenant les routes Express.js que nous utiliserons pour interroger les données:
app.get('/find/:query', cors(), function(req, res, next) {
var query = req.params.query;
Model.find({
'request': query
})
.exec() //remember to add exec, queries have a .then attribute but aren't promises
.then(function(result) {
if (result) {
res.json(result)
} else {
next() //pass to 404 handler
}
})
.catch(next) //pass to error handler
})
Supposons que les documents suivants figurent dans la collection du modèle:
{
"_id" : ObjectId("578abe97522ad414b8eeb55a"),
"request" : "JavaScript is Awesome",
"time" : 1468710551
}
{
"_id" : ObjectId("578abe9b522ad414b8eeb55b"),
"request" : "JavaScript is Awesome",
"time" : 1468710555
}
{
"_id" : ObjectId("578abea0522ad414b8eeb55c"),
"request" : "JavaScript is Awesome",
"time" : 1468710560
}
Et le but est de trouver et d’afficher tous les documents contenant "JavaScript is Awesome"
sous la clé "request"
.
Pour cela, démarrez MongoDB et exécutez server.js
avec node server.js
:
Usage
Pour l'utiliser pour rechercher des données, accédez à l'URL suivante dans un navigateur:
http://localhost:8080/find/<query>
Où <query>
est la requête de recherche.
Exemple:
http://localhost:8080/find/JavaScript%20is%20Awesome
Sortie:
[{
_id: "578abe97522ad414b8eeb55a",
request: "JavaScript is Awesome",
time: 1468710551,
__v: 0
},
{
_id: "578abe9b522ad414b8eeb55b",
request: "JavaScript is Awesome",
time: 1468710555,
__v: 0
},
{
_id: "578abea0522ad414b8eeb55c",
request: "JavaScript is Awesome",
time: 1468710560,
__v: 0
}]