In einem früheren Artikel wurden Sie CouchDB vorgestellt. Dieses Mal erstellen Sie eine vollwertige App, in der Sie die von Ihnen gelernten Dinge anwenden können. Sie lernen auch, wie Sie Ihre Datenbank am Ende des Tutorials sichern.
Auf diese Weise können Benutzer die Orte der Monster speichern, denen sie auf Pokemon GO begegnen. Google Maps werden verwendet, um nach Standorten zu suchen, und einen Marker, der platziert ist, um den genauen Standort zu bestimmen. Sobald der Benutzer mit dem Standort zufrieden ist, kann der Marker interagiert werden, wenn er ein modales Feld anzeigt, mit dem der Benutzer den Namen des Pokemon eingeben und den Speicherort speichern kann. Wenn der nächste Benutzer vorbeikommt und denselben Speicherort sucht, werden die von früheren Benutzer hinzugefügten Werte in der Karte als Markierungen aufgetragen. So wird die App aussehen:
Einrichten der Entwicklungsumgebung
Die Box wird nicht mit installiertem CouchDB geliefert, sodass Sie das manuell tun müssen. Aber nicht nur einfach Couchdb. Die App muss mit GEO -Daten (Breiten und Längswerte) arbeiten: Sie liefern CouchDB mit den Begrenzungsbox -Informationen von Google Maps. Das Begrenzungsfeld repräsentiert den Bereich, der derzeit in der Karte angezeigt wird, und alle vorherigen Koordinaten, die Benutzer in diesem Bereich hinzugefügt haben, werden ebenfalls auf der Karte angezeigt. CouchDB kann dies nicht standardmäßig tun, weshalb Sie ein Plugin namens Geocouch installieren müssen, um CouchDB einige räumliche Superkräfte zu geben.
Der einfachste Weg, dies zu tun, ist das Geocouch -Docker -Container. Sie können auch versuchen, Geocouch manuell zu installieren. Sie müssen jedoch CouchDB von Quelle installieren und alles von Hand konfigurieren. Ich empfehle diese Methode nicht wirklich, es sei denn, Sie haben einen Unix -Bart.
Gehen Sie voran und installieren Sie Docker in der von Ihnen verwendeten VM und kommen Sie hierher zurück, sobald Sie fertig sind.
Klonen Sie zuerst das Repo und navigieren Sie in das erstellte Verzeichnis.
<span>git clone git@github.com:elecnix/docker-geocouch.git </span><span>cd docker-geocouch </span>
Öffnen Sie als Nächst
# Get the CouchDB source RUN cd /opt; wget http://www-eu.apache.org/dist/couchdb/source/${COUCH_VERSION}/a$ tar xzf /opt/apache-couchdb-${COUCH_VERSION}.tar.gz
Erstellen Sie das Docker -Bild:
<span>docker build -t elecnix/docker-geocouch:1.6.1 . </span>
<span>docker create -ti -p 5984:5984 elecnix/docker-geocouch:1.6.1 </span><span>docker start <container id> </span>
<span>curl localhost:5984 </span>
<span>curl 192.168.33.10:5984 </span>
<span>{"couchdb":"Welcome","uuid":"2f0b5e00e9ce08996ace6e66ffc1dfa3","version":"1.6.1","vendor":{"version":"1.6.1","name":"The Apache Software Foundation"}} </span>
Einrichten des Projekts
php <span>composer create-project slim/slim-skeleton pokespawn </span>
<span>composer require danrovito/pokephp guzzlehttp/guzzle gregwar/image vlucas/phpdotenv </span>
Zugriff auf Futon aus dem Browser und erstellen Sie eine neue Datenbank namens Pokespawn. Gehen Sie nach dem Erstellen in die Datenbank und erstellen Sie eine neue Ansicht. Sie können dies tun, indem Sie auf die Dropdown -Ansicht anstellen und die temporäre Ansicht auswählen. Fügen Sie Folgendes in der TextArea für die Kartenfunktion hinzu:
<span>git clone git@github.com:elecnix/docker-geocouch.git </span><span>cd docker-geocouch </span>
Sobald dies erledigt ist, klicken Sie auf die Schaltfläche Speichern, fügen Sie Pokémon als Name des Designdokuments und By_Name als Ansichtsname hinzu. Drücken Sie auf Speichern, um die Ansicht zu speichern. Später verwenden Sie diese Ansicht, um Pokemon -Namen basierend auf dem vorzuschlagen, was der Benutzer eingegeben hat.
Erstellen Sie als nächstes ein Designdokument, um auf räumliche Suchanfragen zu reagieren. Sie können dies tun, indem Sie Entwurfsdokumente in der Dropdown -Ansicht auswählen und dann auf ein neues Dokument klicken. Sobald auf der Seite ein Designdokument erstellt wird, klicken Sie auf die Schaltfläche Feld hinzufügen und räumlich als Feldname und den folgenden als Wert hinzufügen:
# Get the CouchDB source RUN cd /opt; wget http://www-eu.apache.org/dist/couchdb/source/${COUCH_VERSION}/a$ tar xzf /opt/apache-couchdb-${COUCH_VERSION}.tar.gz
In diesem Entwurfsdokument werden die von Geocouch bereitgestellten räumlichen Funktionen verwendet. Das erste, was es tut, ist zu prüfen, ob das Dokument über ein Loc -Feld enthält. Das LOC -Feld ist ein Array, das die Koordinaten eines bestimmten Ortes enthält, wobei der erste Element den Breitengrad und das zweite Element, das die Länge enthält, enthält. Wenn das Dokument diese Kriterien erfüllt, verwendet es die EMIT () -Funktion wie eine normale Ansicht. Der Schlüssel ist eine Geojson -Geometrie und der Wert ist ein Array, das den Namen des Pokemon und des Sprite enthält.
Wenn Sie eine Anfrage an das Designdokument stellen, müssen Sie den Start_Range und das End_Range mit dem Format eines JSON -Arrays angeben. Jeder Artikel kann entweder eine Nummer oder eine Null sein. Null wird verwendet, wenn Sie einen offenen Bereich wünschen. Hier ist eine Beispielanforderung:
<span>docker build -t elecnix/docker-geocouch:1.6.1 . </span>
und seine Ausgabe:
<span>docker create -ti -p 5984:5984 elecnix/docker-geocouch:1.6.1 </span><span>docker start <container id> </span>
Wenn Sie mehr darüber erfahren möchten, welche spezifischen Vorgänge Sie mit Geocouch durchführen können, lesen Sie unbedingt die Dokumentation oder das Wiki.
Jetzt können Sie Code schreiben. Zuerst werden Sie sich den Code für das Back-End ansehen und dann mit dem Front-End-Code fortfahren.
Die App erfordert, dass einige Pokemon -Daten bereits in der Datenbank liegen, bevor sie verwendet werden kann, sodass ein Skript, das nur lokal ausgeführt wird. Erstellen Sie eine Datei poke-Importer.php am Stamm Ihres Projektverzeichnisses und fügen Sie Folgendes hinzu:
<span>git clone git@github.com:elecnix/docker-geocouch.git </span><span>cd docker-geocouch </span>
Dieses Skript stellt eine Anfrage an den Pokedex -Endpunkt der Pokemon -API. Dieser Endpunkt erfordert die ID der Pokedex -Version, die sie zurückgeben soll. Da Pokemon GO nur den Spielern ermöglicht, Pokemon aus der ersten Generation zu fangen, liefern Sie 2 als ID. Dies gibt das gesamte Pokémon aus der Region Kanto des ursprünglichen Pokemon -Spiels zurück. Schleifen Sie dann die Daten durch, extrahieren Sie alle erforderlichen Informationen, speichern Sie das Sprite und erstellen Sie ein neues Dokument mit den extrahierten Daten.
Öffnen Sie die Datei src/Routes.php und fügen Sie die folgenden Routen hinzu:
# Get the CouchDB source RUN cd /opt; wget http://www-eu.apache.org/dist/couchdb/source/${COUCH_VERSION}/a$ tar xzf /opt/apache-couchdb-${COUCH_VERSION}.tar.gz
Jede der Routen reagieren auf die Aktionen, die im gesamten App ausgeführt werden können. Die Stammroute gibt die Startseite zurück, die Suchroute gibt die Pokemon-Namensvorschläge zurück, die Save-Location-Route spart den Ort und die Fetch-Route gibt das Pokemon an einem bestimmten Ort zurück.
Erstellen Sie unter dem SRC -Verzeichnis einen App/Controller -Ordner und im Inneren eine Homecontroller.php -Datei. Dadurch werden alle für die einzelnen Routen benötigten Aktionen durchgeführt. Hier ist der Code:
<span>docker build -t elecnix/docker-geocouch:1.6.1 . </span>
Der Home Controller verwendet den $ renderer, der über den Konstruktor übergeben wird, um die Startseite der App zu rendern. Es verwendet auch die DB -Klasse, die Sie in Kürze erstellen.
Erstellen Sie eine Utils/db.php -Datei im App -Verzeichnis. Öffnen Sie die Datei und erstellen Sie eine Klasse:
<span>docker create -ti -p 5984:5984 elecnix/docker-geocouch:1.6.1 </span><span>docker start <container id> </span>
In der Klasse erstellen Sie einen neuen Client. Sie verwenden Guzzle anstelle einiger PHP -Clients für CouchDB, da Sie alles, was Sie wollen, damit tun können.
<span>curl localhost:5984 </span>
Die Konfiguration stammt aus der .Env -Datei am Stamm des Projekts. Dies enthält die Basis -URL von Couchdb.
<span>curl 192.168.33.10:5984 </span>
SearchPokemon ist für die Rückgabe der von der automatischsten Funktionalität verwendeten Daten verantwortlich. Da CouchDB nicht die gleiche Bedingung unterstützt, die Sie in SQL gewohnt sind, verwenden Sie einen kleinen Hack, um ihn nachzuahmen. Der Trick hier ist die Verwendung von start_key und end_key anstelle von nur taste, die nur genau übereinstimmen. FFF0 ist eines der speziellen Unicode -Zeichen, die am Ende der grundlegenden mehrsprachigen Ebene zugewiesen wurden. Dies macht es zu einem guten Kandidaten, um sich am Ende der durchsuchten Zeichenfolge anzuhängen, wodurch der Rest der Zeichen aufgrund seines hohen Wertes optional wird. Beachten Sie, dass dieser Hack nur für kurze Wörter funktioniert, sodass er mehr als ausreicht, um nach Pokemon -Namen zu suchen.
<span>{"couchdb":"Welcome","uuid":"2f0b5e00e9ce08996ace6e66ffc1dfa3","version":"1.6.1","vendor":{"version":"1.6.1","name":"The Apache Software Foundation"}} </span>
makeGetRequest wird verwendet, um die Leseanforderungen an CouchDB und makepostrequest für das Schreiben auszuführen.
php <span>composer create-project slim/slim-skeleton pokespawn </span>
SavePokemonLocation speichert die Koordinaten, auf die der Google Map -Marker derzeit zusammen mit dem Namen und dem Sprite zeigt. Ein Feld doc_type wird auch hinzugefügt, um alle Dokumente in Bezug
<span>composer require danrovito/pokephp guzzlehttp/guzzle gregwar/image vlucas/phpdotenv </span>
<span>git clone git@github.com:elecnix/docker-geocouch.git </span><span>cd docker-geocouch </span>
fetchpokemons ist die Funktion, die die Anforderung an das Entwurfsdokument für die zuvor erstellte räumliche Suche erstellt. Hier geben Sie die Southwest -Koordinaten als Wert für den Start_Range und die Nordostkoordinaten als Wert für das end_range an. Die Antwort ist auch auf die ersten 100 Zeilen beschränkt, um zu verhindern, dass zu viele Daten angefordert werden. Zuvor haben Sie auch gesehen, dass einige Daten von CouchDB zurückgegeben werden, die nicht wirklich benötigt werden. Es wäre nützlich zu extrahieren und dann nur die für das Frontend erforderlichen Daten zurückzugeben. Ich entschied mich dafür, das als Optimierung für einen weiteren Tag zu verlassen.
# Get the CouchDB source RUN cd /opt; wget http://www-eu.apache.org/dist/couchdb/source/${COUCH_VERSION}/a$ tar xzf /opt/apache-couchdb-${COUCH_VERSION}.tar.gz
HandleResponse konvertiert die von CouchDB zurückgegebene JSON -Zeichenfolge in ein Array.
<span>docker build -t elecnix/docker-geocouch:1.6.1 . </span>
öffnen Sie Composer.json im Stammverzeichnis und fügen Sie die folgenden direkt unter der Forderungseigenschaft hinzu und führen Sie den Komponisten-Dump-Autoload aus. Auf diese Weise können Sie alle Dateien im SRC/App -Verzeichnis automatisch laden und es im App -Namespace zur Verfügung stellen:
<span>docker create -ti -p 5984:5984 elecnix/docker-geocouch:1.6.1 </span><span>docker start <container id> </span>
Injektieren Sie zum Schluss den Home Controller in den Container. Sie können dies tun, indem Sie die Datei src/abhängig.php öffnen und unten Folgendes hinzufügen:
<span>curl localhost:5984 </span>
Auf diese Weise können Sie den Twig -Renderer an den Heimcontroller weitergeben und homecontroller vom Router zugänglich machen.
Jetzt sind Sie bereit, mit dem Front-End fortzufahren. Erstellen Sie zunächst eine Vorlagen/index.html -Datei am Stamm des Projektverzeichnisses und fügen Sie Folgendes hinzu:
<span>curl 192.168.33.10:5984 </span>
im
sind die Stile aus den verschiedenen Bibliotheken, die die App verwendet, sowie die Stile für die App. In der befinden sich das Textfeld für Suchpositionen, den Kartenbehälter und das Modal zum Speichern eines neuen Standorts. Im Folgenden sind die in der App verwendeten Skripte. Vergessen Sie nicht, Ihre_googlemap_apikey im Google Maps -Skript durch Ihren eigenen API -Schlüssel zu ersetzen.für die Hauptdatei JavaScript (öffentlich/js/main.js) erstellen Sie zunächst Variablen zum Speichern von Werten, die Sie während der gesamten Datei benötigen.
<span>{"couchdb":"Welcome","uuid":"2f0b5e00e9ce08996ace6e66ffc1dfa3","version":"1.6.1","vendor":{"version":"1.6.1","name":"The Apache Software Foundation"}} </span>
Erstellen Sie als nächstes die Funktion zum Initialisieren der Karte. Ein min_zoomLevel wird angegeben, um zu verhindern, dass Benutzer die gesamte Weltkarte sehen können. Sie haben bereits eine Grenze zu den Ergebnissen hinzugefügt, die von CouchDB zurückgegeben werden können. Dies ist jedoch auch eine gute Ergänzung, um zu verhindern, dass die Benutzer von der ganzen Welt Daten auswählen können.
php <span>composer create-project slim/slim-skeleton pokespawn </span>
Erstellen Sie den Marker für Pin-Ankündigungsorte, die Benutzer hinzufügen möchten. Fügen Sie dann einen Ereignishörer hinzu, um das Modal zum Hinzufügen von Stellen zu öffnen, wenn der Marker gedrückt wird:
<span>composer require danrovito/pokephp guzzlehttp/guzzle gregwar/image vlucas/phpdotenv </span>
Initialisieren Sie das Suchfeld:
<span>function(doc){ </span> <span>if(doc.doc_type == 'pokemon'){ </span> <span>emit(doc.name, null); </span> <span>} </span><span>} </span>
Fügen Sie verschiedene Kartenhörer hinzu:
<span>{ </span> <span>"points": "function(doc) {\n if (doc.loc) {\n emit([{\n type: \"Point\",\n coordinates: [doc.loc[0], doc.loc[1]]\n }], [doc.name, doc.sprite]);\n }};" </span><span>} </span>
Fügen Sie einen Ereignishörer hinzu, wenn sich der Platz im Suchfeld ändert.
<span>curl -X GET --globoff 'http://192.168.33.10:5984/pokespawn/_design/location/_spatial/points?start_range=[-33.87049924568689,151.2149563379288]&end_range=[33.86709181198735,151.22298150730137]' </span>
Die Fetchpokemon -Funktion ist für das Abrufen des Pokémon verantwortlich
<span>git clone git@github.com:elecnix/docker-geocouch.git </span><span>cd docker-geocouch </span>
Dies ist der Code zum Hinzufügen der automatischsten Funktionalität des Textfelds zum Eingeben des Namens eines Pokémon. Eine RenderItem -Funktion wird angegeben, um die HTML anzupassen, die zum Rendern jeder Vorschläge verwendet wird. Auf diese Weise können Sie die ID des Pokemon als Datenattribut hinzufügen, mit dem Sie den Wert des Feldes pokemon_id festlegen, sobald ein Vorschlag ausgewählt ist.
# Get the CouchDB source RUN cd /opt; wget http://www-eu.apache.org/dist/couchdb/source/${COUCH_VERSION}/a$ tar xzf /opt/apache-couchdb-${COUCH_VERSION}.tar.gz
Wenn die Schaltfläche Speicherort gespeichert wird, wird dem Server eine Anforderung gestellt, um den Pokemon -Speicherort zu CouchDB hinzuzufügen.
<span>docker build -t elecnix/docker-geocouch:1.6.1 . </span>
Erstellen Sie eine öffentliche/css/styles.css -Datei und fügen Sie die folgenden Stile hinzu:
<span>docker create -ti -p 5984:5984 elecnix/docker-geocouch:1.6.1 </span><span>docker start <container id> </span>
standardmäßig ist CouchDB für alle geöffnet. Dies bedeutet, dass jeder, sobald Sie es dem Internet ausgesetzt sind, jeder in Ihrer Datenbank Chaos anrichten kann. Jeder kann einen beliebigen Datenbankvorgang durchführen, indem sie einfach Curl, Postbote oder ein anderes Tool verwenden, um HTTP -Anforderungen zu erstellen. Tatsächlich hat dieser vorübergehende Zustand sogar einen Namen: die „Administratorpartei“. Sie haben dies im vorherigen Tutorial in Aktion gesehen und selbst wenn Sie früher eine neue Datenbank, eine Ansicht und ein Designdokument erstellt haben. Alle diese Aktionen können nur vom Serveradministrator ausgeführt werden, aber Sie haben es getan, ohne sich anzumelden oder so. Immer noch nicht überzeugt? Versuchen Sie, dies auf Ihrem lokalen Computer auszuführen:
<span>curl localhost:5984 </span>
Sie erhalten Folgendes als Antwort, wenn Sie noch keinen Server -Administrator auf Ihrer CouchDB -Installation haben:
<span>curl 192.168.33.10:5984 </span>
yikes, oder? Die gute Nachricht ist, dass es eine einfache Lösung gibt. Sie müssen lediglich einen Serveradministrator erstellen. Sie können dies mit dem folgenden Befehl tun:
<span>{"couchdb":"Welcome","uuid":"2f0b5e00e9ce08996ace6e66ffc1dfa3","version":"1.6.1","vendor":{"version":"1.6.1","name":"The Apache Software Foundation"}} </span>
Der obige Befehl erstellt einen neuen Server -Administrator mit dem Namen "Kami" mit dem Passwort "MysuperSecurePassword".
standardmäßig hat CouchDB keinen Server -Administrator. Sobald Sie eine erstellt haben, ist die Administratorpartei vorbei. Beachten Sie, dass Server-Administratoren gottähnliche Kräfte haben, sodass Sie wahrscheinlich besser dran sind, nur ein oder zwei zu erstellen. Erstellen Sie dann eine Handvoll Datenbankadministratoren, die nur CRUD -Operationen ausführen können. Sie können dies tun, indem Sie den folgenden Befehl ausführen:
php <span>composer create-project slim/slim-skeleton pokespawn </span>
Wenn es erfolgreich ist, wird eine Antwort ähnlich wie folgt zurückgegeben:
<span>composer require danrovito/pokephp guzzlehttp/guzzle gregwar/image vlucas/phpdotenv </span>
Jetzt können Sie denselben Befehl von früher mit einem anderen Datenbanknamen ausprobieren:
<span>function(doc){ </span> <span>if(doc.doc_type == 'pokemon'){ </span> <span>emit(doc.name, null); </span> <span>} </span><span>} </span>
und CouchDB werden Sie anschreien:
<span>{ </span> <span>"points": "function(doc) {\n if (doc.loc) {\n emit([{\n type: \"Point\",\n coordinates: [doc.loc[0], doc.loc[1]]\n }], [doc.name, doc.sprite]);\n }};" </span><span>} </span>
Damit dies funktioniert, müssen Sie jetzt Ihren Benutzernamen und Ihr Passwort in der URL wie SO angeben:
<span>git clone git@github.com:elecnix/docker-geocouch.git </span><span>cd docker-geocouch </span>
ok, das ist es? Nun, nicht wirklich, weil das einzige, was Sie durchgeführt haben, die Datenbankvorgänge beschränken, die nur von Server -Administratoren durchgeführt werden können. Dies beinhaltet Dinge wie das Erstellen einer neuen Datenbank, das Löschen einer Datenbank, das Verwalten von Benutzern, das Vollverkehrszugriff auf alle Datenbanken (einschließlich Systemtabellen) und CRUD-Vorgänge auf alle Dokumente. Dadurch haben Sie nicht authentifizierte Benutzer, die immer noch die Möglichkeit haben, Crud -Sachen in jeder Datenbank zu machen. Sie können dies ausprobieren, indem Sie sich aus Futon abmelden, jede Datenbank auswählen, mit der Sie sich anlegen möchten, und Roh -Sachen darin machen. CouchDB wird diese Operationen immer noch gerne für Sie ausführen.
Wie können Sie die verbleibenden Löcher patchen? Sie können dies tun, indem Sie ein Designdokument erstellen, das überprüft, ob der Benutzername des Benutzer, der versucht, eine Schreiboperation auszuführen (Einfügen oder Update), dem Namen des Benutzers entspricht, der dies tun darf. Melden Sie sich in Futon mithilfe eines Server -Administrator- oder Datenbankadmin -Kontos an, wählen Sie die Datenbank aus, mit der Sie arbeiten möchten, und erstellen Sie ein neues Designdokument. Stellen Sie die ID als _design/blockanonymouswrites fest, fügen Sie ein Feld namens validate_doc_update hinzu und setzen Sie den Wert auf Folgendes:
# Get the CouchDB source RUN cd /opt; wget http://www-eu.apache.org/dist/couchdb/source/${COUCH_VERSION}/a$ tar xzf /opt/apache-couchdb-${COUCH_VERSION}.tar.gz
Die neue Version des Dokuments, das vorhandene Dokument und der Benutzerkontext werden als Argument für diese Funktion übergeben. Das einzige, was Sie überprüfen müssen, ist der UserCtX, der den Namen der Datenbank enthält, der Name des Benutzers, der die Operation durchführt, und ein Array von Rollen, die dem Benutzer zugeordnet sind.
Ein Secobj wird auch als viertes Argument verabschiedet, aber Sie müssen nicht wirklich daran arbeiten. Deshalb wird es weggelassen. Grundsätzlich beschreibt der Secobj, welche Administratorrechte in der Datenbank festgelegt wurden.
Sobald Sie den Wert hinzugefügt haben, speichern Sie das Entwurfsdokument, melden Sie sich an und versuchen Sie, ein neues Dokument zu erstellen oder ein vorhandenes zu aktualisieren und sich mit CouchDB anzuschauen.
Da Sie nur nach dem Benutzernamen suchen, denken Sie vielleicht, dass Angreifer einfach den Benutzernamen erraten und den Wert für das Passwort liefern können und es funktionieren würde. Nun, nicht wirklich, weil CouchDB zuerst überprüft, ob der Benutzername und das Passwort korrekt sind, bevor das Designdokument überhaupt ausgeführt wird.
Alternativ können Sie, wenn Sie viele Benutzer in einer einzigen Datenbank haben, auch nach der Rolle überprüfen. Die folgende Funktion bringt jedem Benutzer einen Fehler, der nicht die Rolle von "pokemon_master" hat.
<span>docker build -t elecnix/docker-geocouch:1.6.1 . </span>
Wenn Sie mehr über die Sicherung von CouchDB erfahren möchten, lesen Sie die folgenden Ressourcen:
Lassen Sie uns die App aktualisieren, um die Sicherheitsmaßnahmen zu verwenden, die Sie auf die Datenbank angewendet haben. Aktualisieren Sie zuerst die .Env -Datei: Ändern Sie die Base_uri nur mit der IP -Adresse und dem Port und fügen Sie dann den Benutzernamen und das Kennwort des von Ihnen erstellten CouchDB -Benutzers hinzu.
<span>git clone git@github.com:elecnix/docker-geocouch.git </span><span>cd docker-geocouch </span>
Aktualisieren Sie dann den Konstruktor der DB -Klasse, um die neuen Details zu verwenden:
# Get the CouchDB source RUN cd /opt; wget http://www-eu.apache.org/dist/couchdb/source/${COUCH_VERSION}/a$ tar xzf /opt/apache-couchdb-${COUCH_VERSION}.tar.gz
Das ist es! In diesem Tutorial haben Sie gelernt, wie man eine Pokemon Spawn -Orte -Rekorder -App mit CouchDB erstellt. Mit Hilfe des Geocouch -Plugins konnten Sie räumliche Abfragen durchführen und Sie haben gelernt, wie Sie Ihre CouchDB -Datenbank sichern können.
Verwenden Sie CouchDB in Ihren Projekten? Wozu? Irgendwelche Vorschläge / Funktionen, die zu diesem kleinen Projekt von uns aufgenommen werden sollen? Lassen Sie uns in den Kommentaren wissen!
Kann ich zur Pogomap -Website beitragen? Dies hilft, die Karte auf dem Laufenden und genau zu halten. Beachten Sie jedoch, dass die Meldung falscher Informationen zu einem Verbot der Website führen kann. Standorte. Zum Beispiel können Sie sich lokalen Pokemon Go -Communities oder Foren anschließen, in denen Spieler Informationen über Spawn -Standorte austauschen. Sie können auch die Feature in Spiel in der Nähe verwenden, um Pokemon zu finden, die in der Nähe Ihres aktuellen Standorts liegen.
Das obige ist der detaillierte Inhalt vonSo erstellen Sie einen Pokemon Spawn -Standorte -Recorder mit CouchDB. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!