Node.js
Mungo-Bibliothek
Suche…
Verbinden Sie sich mit MongoDB mit Mongoose
Installieren Sie zuerst Mongoose mit:
npm install mongoose
server.js
Sie es server.js
als Abhängigkeiten zu server.js
:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
Als Nächstes erstellen Sie das Datenbankschema und den Namen der Sammlung:
var schemaName = new Schema({
request: String,
time: Number
}, {
collection: 'collectionName'
});
Erstellen Sie ein Modell und stellen Sie eine Verbindung zur Datenbank her:
var Model = mongoose.model('Model', schemaName);
mongoose.connect('mongodb://localhost:27017/dbName');
Starten Sie anschließend MongoDB und führen Sie server.js
mit dem node server.js
Um zu überprüfen, ob wir erfolgreich eine Verbindung zur Datenbank hergestellt haben, können wir die Ereignisse open
, error
des mongoose.connection
Objekts verwenden.
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
// we're connected!
});
Speichern Sie Daten in MongoDB mithilfe der Routen von Mongoose und Express.js
Konfiguration
Installieren Sie zuerst die erforderlichen Pakete mit:
npm install express cors mongoose
Code
server.js
Datei server.js
dann Abhängigkeiten server.js
, erstellen Sie das Datenbankschema und den Namen der Sammlung, erstellen Sie einen Express.js-Server und stellen Sie eine Verbindung zu MongoDB her
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);
});
Fügen Sie nun Express.js-Routen hinzu, die wir zum Schreiben der Daten verwenden werden:
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)
}
})
})
Hier ist die query
der Parameter <query>
aus der eingehenden HTTP-Anforderung, der in MongoDB gespeichert wird:
var savedata = new Model({
'request': query,
//...
Wenn beim Versuch, in MongoDB zu schreiben, ein Fehler auftritt, wird auf der Konsole eine Fehlermeldung angezeigt. Wenn alles erfolgreich ist, werden die gespeicherten Daten im JSON-Format auf der Seite angezeigt.
//...
}).save(function(err, result) {
if (err) throw err;
if(result) {
res.json(result)
}
})
//...
Jetzt müssen Sie MongoDB starten und Ihre server.js
Datei mit dem node server.js
.
Verwendungszweck
Um dies zum Speichern von Daten zu verwenden, rufen Sie in Ihrem Browser die folgende URL auf:
http://localhost:8080/save/<query>
Wo <query>
ist die neue Anforderung , die Sie speichern möchten.
Beispiel:
http://localhost:8080/save/JavaScript%20is%20Awesome
Ausgabe im JSON-Format:
{
__v: 0,
request: "JavaScript is Awesome",
time: 1469411348,
_id: "57957014b93bc8640f2c78c4"
}
Finden Sie Daten in MongoDB mithilfe von Mongoose- und Express.js-Routen
Konfiguration
Installieren Sie zuerst die erforderlichen Pakete mit:
npm install express cors mongoose
Code
server.js
Abhängigkeiten server.js
, erstellen Sie das Datenbankschema und den Namen der Sammlung, erstellen Sie einen Express.js-Server und stellen Sie eine Verbindung zu MongoDB her
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);
});
Fügen Sie nun Express.js-Routen hinzu, die wir zur Abfrage der Daten verwenden werden:
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'
}))
}
})
})
Angenommen, die folgenden Dokumente befinden sich in der Sammlung des Modells:
{
"_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
}
Das Ziel ist es, alle Dokumente, die "JavaScript is Awesome"
unter der "JavaScript is Awesome"
"request"
zu finden und anzuzeigen.
Starten Sie dazu MongoDB und führen Sie server.js
mit dem node server.js
:
Verwendungszweck
Um Daten zu finden, rufen Sie die folgende URL in einem Browser auf:
http://localhost:8080/find/<query>
Wobei <query>
die Suchabfrage ist.
Beispiel:
http://localhost:8080/find/JavaScript%20is%20Awesome
Ausgabe:
[{
_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
}]
Finden Sie Daten in MongoDB mit Mongoose, Express.js Routes und $ text Operator
Konfiguration
Installieren Sie zuerst die erforderlichen Pakete mit:
npm install express cors mongoose
Code
server.js
Abhängigkeiten server.js
, erstellen Sie das Datenbankschema und den Namen der Sammlung, erstellen Sie einen Express.js-Server und stellen Sie eine Verbindung zu MongoDB her
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);
});
Fügen Sie nun Express.js-Routen hinzu, die wir zur Abfrage der Daten verwenden werden:
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'
}))
}
})
})
Angenommen, die folgenden Dokumente befinden sich in der Sammlung des Modells:
{
"_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
}
Das Ziel besteht darin, alle Dokumente zu finden und anzuzeigen, die nur das Wort "JavaScript"
unter der "request"
.
Erstellen Sie dazu zunächst einen Textindex für "request"
in der Sammlung. server.js
Sie hierzu den folgenden Code zu server.js
:
schemaName.index({ request: 'text' });
Und ersetzen Sie:
Model.find({
'request': query
}, function(err, result) {
Mit:
Model.find({
$text: {
$search: query
}
}, function(err, result) {
Hier verwenden wir $text
und $search
MongoDB-Operatoren für das Finden aller Dokumente in collection collectionName
die mindestens ein Wort aus der angegebenen Suchabfrage enthalten.
Verwendungszweck
Um Daten zu finden, rufen Sie die folgende URL in einem Browser auf:
http://localhost:8080/find/<query>
Wobei <query>
die Suchabfrage ist.
Beispiel:
http://localhost:8080/find/JavaScript
Ausgabe:
[{
_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
}]
Indizes in Modellen.
MongoDB unterstützt sekundäre Indizes. In Mongoose definieren wir diese Indizes innerhalb unseres Schemas. Die Definition von Indizes auf Schemaebene ist erforderlich, wenn zusammengesetzte Indizes erstellt werden müssen.
Mungo-Verbindung
var strConnection = 'mongodb://localhost:27017/dbName';
var db = mongoose.createConnection(strConnection)
Ein grundlegendes Schema erstellen
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;
Standardmäßig fügt mongoose unserem Modell zwei neue Felder hinzu, auch wenn diese nicht im Modell definiert sind. Diese Felder sind:
_Ich würde
Mongoose weist jedem Ihrer Schemas standardmäßig ein _id-Feld zu, wenn eines nicht an den Schemakonstruktor übergeben wird. Der zugewiesene Typ ist eine ObjectId, die mit dem Standardverhalten von MongoDB übereinstimmt. Wenn Sie nicht möchten, dass eine _id zu Ihrem Schema hinzugefügt wird, können Sie sie mit dieser Option deaktivieren.
var usersSchema = new Schema({
username: {
type: String,
required: true,
unique: true
}, {
_id: false
});
__v oder versionKey
Der versionKey ist eine Eigenschaft, die bei der erstmaligen Erstellung durch Mongoose in jedem Dokument festgelegt wird. Dieser Schlüsselwert enthält die interne Revision des Dokuments. Der Name dieser Dokumenteigenschaft ist konfigurierbar.
Sie können dieses Feld einfach in der Modellkonfiguration deaktivieren:
var usersSchema = new Schema({
username: {
type: String,
required: true,
unique: true
}, {
versionKey: false
});
Zusammengesetzte Indizes
Neben den von Mongoose erstellten Indizes können wir weitere Indizes erstellen.
usersSchema.index({username: 1 });
usersSchema.index({email: 1 });
In diesem Fall verfügt unser Modell über zwei weitere Indizes, einen für das Feld Benutzername und einen für das E-Mail-Feld. Wir können jedoch zusammengesetzte Indizes erstellen.
usersSchema.index({username: 1, email: 1 });
Auswirkungen auf den Index
Standardmäßig ruft mongoose immer den configureIndex für jeden Index nacheinander auf und gibt ein "Index" -Ereignis für das Modell aus, wenn alle Aufrufe von sichuerindex erfolgreich waren oder ein Fehler auftrat.
In MongoDB ist sureIndex seit der Version 3.0.0 veraltet. Jetzt ist es ein Alias für createIndex.
Es wird empfohlen, das Verhalten zu deaktivieren, indem Sie die Option autoIndex Ihres Schemas auf false oder global für die Verbindung setzen, indem Sie die Option config.autoIndex auf false setzen.
usersSchema.set('autoIndex', false);
Nützliche Mongoose-Funktionen
Mongoose enthält einige eingebaute Funktionen, die auf dem standard find()
aufbauen.
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
});
Finden Sie Daten in Mongodb mit Versprechungen
Konfiguration
Installieren Sie zuerst die erforderlichen Pakete mit:
npm install express cors mongoose
Code
server.js
Abhängigkeiten server.js
, erstellen Sie das Datenbankschema und den Namen der Sammlung, erstellen Sie einen Express.js-Server und stellen Sie eine Verbindung zu MongoDB her
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!');
});
Fügen Sie nun Express.js-Routen hinzu, die wir zur Abfrage der Daten verwenden werden:
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
})
Angenommen, die folgenden Dokumente befinden sich in der Sammlung des Modells:
{
"_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
}
Das Ziel ist es, alle Dokumente, die "JavaScript is Awesome"
unter der "JavaScript is Awesome"
"request"
zu finden und anzuzeigen.
Starten Sie dazu MongoDB und führen Sie server.js
mit dem node server.js
:
Verwendungszweck
Um Daten zu finden, rufen Sie die folgende URL in einem Browser auf:
http://localhost:8080/find/<query>
Wobei <query>
die Suchabfrage ist.
Beispiel:
http://localhost:8080/find/JavaScript%20is%20Awesome
Ausgabe:
[{
_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
}]