Rumah >pembangunan bahagian belakang >tutorial php >Cara membuat perakam lokasi pokemon spawn dengan couchdb

Cara membuat perakam lokasi pokemon spawn dengan couchdb

Joseph Gordon-Levitt
Joseph Gordon-Levittasal
2025-02-10 12:01:13641semak imbas

Cara membuat perakam lokasi pokemon spawn dengan couchdb

Dalam artikel sebelumnya, anda telah diperkenalkan kepada CouchDB. Kali ini, anda akan membuat aplikasi penuh di mana anda boleh menggunakan perkara yang anda pelajari. Anda juga akan belajar bagaimana untuk mendapatkan pangkalan data anda pada akhir tutorial.

Takeaways Key

    Gunakan CouchDB dipertingkatkan dengan plugin GeoCouch untuk merakam dan mengambil data geospatial mengenai lokasi spawn Pokemon dengan cekap.
  • Sediakan persekitaran pembangunan yang mantap menggunakan Homestead bertambah baik dan Docker untuk mengendalikan kebergantungan dan memastikan tetapan pembangunan yang konsisten merentasi mesin yang berbeza.
  • Melaksanakan rangka kerja langsing dan pakej PHP tambahan untuk memudahkan pembangunan backend, membolehkan komunikasi yang cekap dengan Pokemon API dan Couchdb.
  • Selamat Pemasangan CouchDB anda dengan menyediakan pentadbir pelayan dan pentadbir pangkalan data untuk mengelakkan akses dan pengubahsuaian yang tidak dibenarkan ke pangkalan data anda.
  • Gunakan API Google Maps untuk membolehkan pengguna menentukan dan menyimpan lokasi yang tepat dari Pokemon Spawns, meningkatkan interaktiviti dan fungsi aplikasi.
  • Melaksanakan ciri -ciri frontend menggunakan JavaScript dan pelbagai perpustakaan untuk menyediakan antara muka pengguna yang responsif, termasuk interaksi peta, carian lokasi, dan tingkap modal untuk input data.
  • Pastikan permohonan itu selamat dengan mengemas kini fail .env dengan kelayakan CouchDB dan mengubah suai pembina kelas DB untuk memasukkan kelayakan ini dalam URI asas.
Gambaran keseluruhan projek

Anda akan membina perakam lokasi Pokemon Spawn.

Ini akan membolehkan pengguna menyimpan lokasi raksasa yang mereka hadapi di Pokemon Go. Peta Google akan digunakan untuk mencari lokasi dan penanda yang diletakkan untuk menentukan lokasi yang tepat. Sebaik sahaja pengguna berpuas hati dengan lokasi, penanda boleh berinteraksi dengan, apabila ia akan menunjukkan kotak modal yang membolehkan pengguna memasukkan nama Pokemon dan simpan lokasi. Apabila pengguna seterusnya datang dan mencari lokasi yang sama, nilai -nilai yang ditambah oleh pengguna terdahulu akan diplotkan dalam peta sebagai penanda. Inilah aplikasinya seperti:

Cara membuat perakam lokasi pokemon spawn dengan couchdb kod sumber penuh untuk projek ini boleh didapati di GitHub.

menyediakan persekitaran pembangunan

Jika anda tidak mempunyai persekitaran dev yang baik dan terpencil, disarankan anda menggunakan Homestead bertambah baik.

Kotak itu tidak dilengkapi dengan CouchDB yang dipasang, jadi anda perlu melakukannya secara manual; Tetapi bukan hanya couchdb biasa. Aplikasi ini perlu berfungsi dengan data geo (latitud dan bujur): Anda akan membekalkan Couchdb dengan maklumat kotak terikat dari Peta Google. Kotak terikat mewakili kawasan yang sedang ditunjukkan dalam peta, dan semua pengguna koordinat sebelumnya telah menambah ke kawasan itu akan ditunjukkan pada peta juga. Couchdb tidak boleh melakukannya secara lalai, itulah sebabnya anda perlu memasang plugin yang dipanggil GeoCouch untuk memberi Couchdb beberapa kuasa besar spatial.

Cara paling mudah untuk melakukan itu adalah melalui bekas Docker Geocouch. Anda juga boleh cuba memasang Geocouch secara manual tetapi memerlukan anda memasang Couchdb dari sumber dan mengkonfigurasi semuanya dengan tangan. Saya tidak benar -benar mengesyorkan kaedah ini melainkan anda mempunyai janggut Unix.

Teruskan dan pasang Docker ke VM yang anda gunakan, dan kembali ke sini setelah selesai.

Memasang GeoCouch

Pertama, klon repo dan navigasi di dalam direktori yang dibuat.

<span>git clone git@github.com:elecnix/docker-geocouch.git
</span><span>cd docker-geocouch
</span>

Seterusnya, buka Dockerfile dan ganti skrip untuk mendapatkan Couchdb dengan yang berikut:

# 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

anda perlu melakukan ini kerana URL muat turun yang sedang digunakan sudah gagal.

Bina imej Docker:

<span>docker build -t elecnix/docker-geocouch:1.6.1 .
</span>

Ini akan mengambil sedikit masa bergantung kepada sambungan internet anda supaya pergi merebut snek. Sebaik sahaja ia selesai, buat bekas dan mulakannya:

<span>docker create -ti -p 5984:5984 elecnix/docker-geocouch:1.6.1
</span><span>docker start <container id>
</span>

Sebaik sahaja ia bermula, anda boleh menguji untuk melihat apakah ia berjalan dengan melaksanakan perintah berikut:

<span>curl localhost:5984
</span>

Di luar VM, jika anda mengemukakan port dengan betul, itu akan menjadi:

<span>curl 192.168.33.10:5984
</span>

ia harus mengembalikan perkara berikut:

<span>{"couchdb":"Welcome","uuid":"2f0b5e00e9ce08996ace6e66ffc1dfa3","version":"1.6.1","vendor":{"version":"1.6.1","name":"The Apache Software Foundation"}}
</span>

Perhatikan bahawa saya akan sentiasa merujuk kepada 192.168.33.10 sepanjang artikel. Ini adalah IP yang diberikan kepada Scotchbox, yang merupakan kotak vagrant yang saya gunakan. Jika anda menggunakan Homestead bertambah baik, IP adalah 192.168.10.10. Anda boleh menggunakan IP ini untuk mengakses aplikasinya. Jika anda menggunakan sesuatu yang lain sepenuhnya, menyesuaikan diri seperti yang diperlukan.

menyediakan projek

Anda akan menggunakan rangka kerja langsing untuk mempercepatkan perkembangan aplikasinya. Buat projek baru menggunakan komposer:

php <span>composer create-project slim/slim-skeleton pokespawn
</span>

Pokespawn adalah nama projek, jadi teruskan dan navigasi ke direktori itu apabila komposer selesai memasang. Kemudian, pasang pakej tambahan berikut:

<span>composer require danrovito/pokephp guzzlehttp/guzzle gregwar/image vlucas/phpdotenv
</span>

Berikut adalah gambaran ringkas mengenai setiap satu:

  • Danrovito/Pokephp - untuk dengan mudah bercakap dengan pokemon api.
  • GuzzleHttp/Guzzle - untuk membuat permintaan ke pelayan CouchDB.
  • gregwar/imej - untuk mengubah saiz pokemon sprite yang dikembalikan oleh pokemon api.
  • vlucas/phpdotenv - untuk menyimpan nilai konfigurasi.

menyediakan pangkalan data

Futon akses dari penyemak imbas dan buat pangkalan data baru yang dipanggil Pokespawn. Setelah dibuat, masuk ke dalam pangkalan data dan buat pandangan baru. Anda boleh melakukannya dengan mengklik dropdown paparan dan memilih pandangan sementara. Tambahkan perkara berikut di dalam Textarea untuk fungsi peta:

<span>git clone git@github.com:elecnix/docker-geocouch.git
</span><span>cd docker-geocouch
</span>

Cara membuat perakam lokasi pokemon spawn dengan couchdb

Setelah itu selesai, klik pada butang Simpan As, tambahkan Pokemon sebagai nama dokumen reka bentuk, dan by_name sebagai nama paparan. Tekan Simpan untuk menyimpan pandangan. Kemudian, anda akan menggunakan pandangan ini untuk mencadangkan nama Pokemon berdasarkan apa yang pengguna masuk.

Cara membuat perakam lokasi pokemon spawn dengan couchdb Seterusnya, buat dokumen reka bentuk untuk bertindak balas terhadap carian spatial. Anda boleh melakukannya dengan memilih dokumen reka bentuk dalam dropdown paparan kemudian klik pada dokumen baru. Sekali dalam halaman untuk membuat dokumen reka bentuk, klik pada butang Tambah medan dan tambahkan spatial sebagai nama medan, dan berikut sebagai nilai:

Dokumen reka bentuk ini menggunakan fungsi spatial yang disediakan oleh GeoCouch. Perkara pertama yang dilakukan ialah memeriksa sama ada dokumen itu mempunyai medan LOC di dalamnya. Medan LOC adalah array yang mengandungi koordinat lokasi tertentu, dengan item pertama yang mengandungi latitud dan item kedua yang mengandungi bujur. Jika dokumen memenuhi kriteria ini, ia menggunakan fungsi emit () seperti pandangan biasa. Kuncinya adalah geometri geojson dan nilai adalah array yang mengandungi nama Pokemon dan Sprite.
# 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

Apabila anda membuat permintaan ke dokumen reka bentuk, anda perlu menentukan start_range dan end_range yang mempunyai format array JSON. Setiap item boleh menjadi nombor atau batal. NULL digunakan jika anda mahukan julat terbuka. Berikut adalah permintaan contoh:

dan outputnya:
<span>docker build -t elecnix/docker-geocouch:1.6.1 .
</span>

Jika anda ingin mengetahui lebih lanjut mengenai operasi tertentu yang boleh anda lakukan dengan GeoCouch, pastikan anda membaca dokumentasi atau wiki.
<span>docker create -ti -p 5984:5984 elecnix/docker-geocouch:1.6.1
</span><span>docker start <container id>
</span>

Membuat projek

Sekarang anda sudah bersedia untuk menulis beberapa kod. Mula-mula anda akan melihat kod untuk back-end kemudian beralih ke kod depan.

Poke pengimport

Aplikasi ini memerlukan beberapa data Pokemon untuk berada dalam pangkalan data sebelum ia boleh digunakan, oleh itu keperluan untuk skrip yang hanya dilaksanakan secara tempatan. Buat fail poke-importer.php di akar direktori projek anda dan tambahkan yang berikut:

<span>git clone git@github.com:elecnix/docker-geocouch.git
</span><span>cd docker-geocouch
</span>

Skrip ini membuat permintaan ke titik akhir Pokedex API Pokemon. Titik akhir ini memerlukan ID versi Pokedex yang anda mahu ia kembali. Sejak Pokemon Go hanya membolehkan pemain menangkap Pokemon dari generasi pertama, Supply 2 sebagai ID. Ini mengembalikan semua Pokemon dari rantau Kanto permainan Pokemon yang asal. Kemudian gelung melalui data, ekstrak semua maklumat yang diperlukan, simpan sprite, dan buat dokumen baru menggunakan data yang diekstrak.

Laluan

Buka fail src/routes.php dan tambahkan laluan berikut:

# 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

Setiap laluan akan bertindak balas terhadap tindakan yang boleh dilakukan di seluruh aplikasi. Laluan Root mengembalikan halaman rumah, laluan carian mengembalikan cadangan nama Pokemon, laluan simpan lokasi menjimatkan lokasi dan laluan pengambilan mengembalikan Pokemon di lokasi tertentu.

pengawal rumah

Di bawah direktori SRC, buat folder aplikasi/pengawal dan di dalam membuat fail homecontroller.php. Ini akan melaksanakan semua tindakan yang diperlukan untuk setiap laluan. Inilah kod:

<span>docker build -t elecnix/docker-geocouch:1.6.1 .
</span>

Pengawal rumah menggunakan $ renderer yang diluluskan melalui pembina untuk menjadikan halaman rumah aplikasinya. Ia juga menggunakan kelas DB yang akan anda buat tidak lama lagi.

Bercakap dengan Couchdb

Buat fail UTILS/DB.PHP di bawah direktori aplikasi. Buka fail dan buat kelas:

<span>docker create -ti -p 5984:5984 elecnix/docker-geocouch:1.6.1
</span><span>docker start <container id>
</span>

Di dalam kelas, buat pelanggan Guzzle baru. Anda menggunakan Guzzle dan bukannya beberapa pelanggan PHP untuk CouchDB kerana anda boleh melakukan apa sahaja yang anda mahu dengannya.

<span>curl localhost:5984
</span>

konfigurasi adalah dari fail .env pada akar projek. Ini mengandungi URL asas Couchdb.

<span>curl 192.168.33.10:5984
</span>

SearchPokemon bertanggungjawab untuk mengembalikan data yang digunakan oleh fungsi auto-suggest. Oleh kerana CouchDB sebenarnya tidak menyokong keadaan seperti yang anda gunakan di SQL, anda menggunakan hack kecil untuk meniru. Caranya di sini menggunakan start_key dan end_key dan bukan hanya kunci yang hanya mengembalikan padanan tepat. FFF0 adalah salah satu watak Unicode khas yang diperuntukkan pada akhir pesawat berbilang bahasa. Ini menjadikannya calon yang baik untuk menambahkan pada akhir rentetan sebenar yang dicari, yang menjadikan seluruh watak menjadi pilihan kerana nilai yang tinggi. Perhatikan bahawa hack ini hanya berfungsi untuk kata -kata pendek jadi lebih daripada cukup untuk mencari nama pokemon.

<span>{"couchdb":"Welcome","uuid":"2f0b5e00e9ce08996ace6e66ffc1dfa3","version":"1.6.1","vendor":{"version":"1.6.1","name":"The Apache Software Foundation"}}
</span>
3

SavePokemonLocation menjimatkan koordinat yang mana penanda peta Google sedang menunjuk, bersama dengan nama dan sprite. Medan doc_type juga ditambah untuk mendapatkan pengambilan semula semua dokumen yang berkaitan dengan lokasi.
php <span>composer create-project slim/slim-skeleton pokespawn
</span>

isvalidcoordinates cek jika nilai latitud dan longitud mempunyai format yang sah.
<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 adalah fungsi yang membuat permintaan untuk dokumen reka bentuk untuk carian spatial yang anda buat sebelum ini. Di sini, anda menentukan koordinat barat daya sebagai nilai untuk start_range dan koordinat timur laut sebagai nilai untuk end_range. Tanggapan ini juga terhad kepada 100 baris pertama untuk mengelakkan meminta terlalu banyak data. Terdahulu, anda juga melihat bahawa terdapat beberapa data yang dikembalikan oleh CouchDB yang tidak diperlukan. Ia berguna untuk mengekstrak dan kemudian mengembalikan hanya data yang diperlukan di bahagian depan. Saya memilih untuk meninggalkannya sebagai pengoptimuman untuk hari yang lain.

# 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 menukarkan rentetan JSON yang dikembalikan oleh Couchdb ke dalam array.

<span>docker build -t elecnix/docker-geocouch:1.6.1 .
</span>

Buka composer.json di direktori root dan tambahkan hak berikut di bawah harta yang memerlukan, kemudian laksanakan komposer dump-autoload. Ini membolehkan anda untuk autoload semua fail di dalam direktori src/app dan menjadikannya tersedia di dalam ruang nama aplikasi:

<span>docker create -ti -p 5984:5984 elecnix/docker-geocouch:1.6.1
</span><span>docker start <container id>
</span>

Akhir sekali, suntikan pengawal rumah ke dalam bekas. Anda boleh melakukannya dengan membuka fail src/dependencies.php dan tambahkan yang berikut ke bahagian bawah:

<span>curl localhost:5984
</span>

Ini membolehkan anda lulus penyokong render kepada pengawal rumah dan menjadikan homecontroller boleh diakses dari penghala.

Template Halaman Utama

Sekarang anda sudah bersedia untuk meneruskan dengan bahagian depan. Pertama, buat fail templat/index.html di akar direktori projek dan tambahkan yang berikut:

<span>curl 192.168.33.10:5984
</span>

Di

adalah gaya dari pelbagai perpustakaan yang digunakan oleh aplikasi, serta gaya untuk aplikasinya. Dalam adalah medan teks untuk mencari lokasi, bekas peta, dan modal untuk menyimpan lokasi baru. Di bawah mereka adalah skrip yang digunakan dalam aplikasi. Jangan lupa untuk menggantikan anda_googlemap_apikey dalam skrip Peta Google dengan kunci API anda sendiri.

JavaScript

Untuk fail JavaScript utama (awam/js/main.js), mula -mula membuat pembolehubah untuk menyimpan nilai yang anda perlukan di seluruh fail keseluruhan.

<span>{"couchdb":"Welcome","uuid":"2f0b5e00e9ce08996ace6e66ffc1dfa3","version":"1.6.1","vendor":{"version":"1.6.1","name":"The Apache Software Foundation"}}
</span>

Seterusnya, buat fungsi untuk memulakan peta. Min_zoomlevel ditentukan untuk mengelakkan pengguna keluar dari zum sehingga mereka dapat melihat keseluruhan peta dunia. Anda telah menambah had kepada hasil yang boleh dikembalikan oleh CouchDB, tetapi ini juga merupakan tambahan yang baik untuk menghalang pengguna daripada mengharapkan mereka dapat memilih data dari seluruh dunia.

php <span>composer create-project slim/slim-skeleton pokespawn
</span>
Buat penanda untuk lokasi penunjuk pin yang pengguna mahu tambah. Kemudian, tambahkan pendengar acara untuk membuka modal untuk menambah lokasi apabila penanda ditekan:

<span>composer require danrovito/pokephp guzzlehttp/guzzle gregwar/image vlucas/phpdotenv
</span>
Inisialisasi kotak carian:

<span>function(doc){
</span>  <span>if(doc.doc_type == 'pokemon'){
</span>    <span>emit(doc.name, null);
</span>  <span>}
</span><span>}
</span>
Tambahkan pelbagai pendengar peta:

<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>
Tambahkan pendengar acara ketika tempat dalam kotak carian berubah.

<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>
Fungsi FetchPokemon bertanggungjawab untuk mengambil Pokemon yang sebelum ini diplotkan di kawasan yang boleh dilihat pada peta.

<span>git clone git@github.com:elecnix/docker-geocouch.git
</span><span>cd docker-geocouch
</span>

Ini adalah kod untuk menambahkan fungsi auto-suggest medan teks untuk memasukkan nama Pokemon. Fungsi renderitem ditentukan untuk menyesuaikan HTML yang digunakan untuk memberikan setiap cadangan. Ini membolehkan anda menambah ID Pokemon sebagai atribut data yang kemudian anda gunakan untuk menetapkan nilai medan pokemon_id sebaik sahaja cadangan dipilih.

# 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

Apabila butang lokasi simpan ditekan, permintaan dibuat ke pelayan untuk menambah lokasi Pokemon ke Couchdb.

<span>docker build -t elecnix/docker-geocouch:1.6.1 .
</span>

Styles

Buat fail awam/css/styles.css dan tambahkan gaya berikut:

<span>docker create -ti -p 5984:5984 elecnix/docker-geocouch:1.6.1
</span><span>docker start <container id>
</span>

Mengamankan Couchdb

Secara lalai CouchDB terbuka kepada semua. Ini bermakna apabila anda mendedahkannya ke Internet, sesiapa sahaja boleh mendatangkan malapetaka dalam pangkalan data anda. Sesiapa sahaja boleh melakukan mana -mana operasi pangkalan data dengan hanya menggunakan curl, posman atau mana -mana alat lain untuk membuat permintaan HTTP. Malah, keadaan sementara ini juga mempunyai nama: "Parti Admin". Anda telah melihat ini dalam tindakan dalam tutorial sebelumnya dan walaupun anda membuat pangkalan data baru, pandangan dan dokumen reka bentuk lebih awal. Semua tindakan ini hanya boleh dilakukan oleh pentadbir pelayan tetapi anda telah pergi ke hadapan dan melakukannya tanpa log masuk atau apa -apa. Masih tidak yakin? Cuba laksanakan ini di mesin tempatan anda:

<span>curl localhost:5984
</span>

Anda akan mendapat yang berikut sebagai respons jika anda belum mempunyai admin pelayan pada pemasangan CouchDB anda:

<span>curl 192.168.33.10:5984
</span>

yikes, kan? Berita baiknya ada masalah yang mudah. Apa yang perlu anda lakukan ialah membuat pentadbir pelayan. Anda boleh melakukannya dengan arahan berikut:

<span>{"couchdb":"Welcome","uuid":"2f0b5e00e9ce08996ace6e66ffc1dfa3","version":"1.6.1","vendor":{"version":"1.6.1","name":"The Apache Software Foundation"}}
</span>

Perintah di atas membuat pentadbir pelayan baru bernama "Kami" dengan kata laluan "MySupersecureShword".

Secara lalai, CouchDB tidak mempunyai pentadbir pelayan jadi sebaik sahaja anda membuatnya, pihak pentadbir sudah berakhir. Perhatikan bahawa pentadbir pelayan mempunyai kuasa seperti Tuhan supaya anda mungkin lebih baik membuat hanya satu atau dua. Kemudian buat beberapa pentadbir pangkalan data yang hanya boleh melakukan operasi CRUD. Anda boleh melakukannya dengan melaksanakan arahan berikut:

php <span>composer create-project slim/slim-skeleton pokespawn
</span>

Jika berjaya, ia akan mengembalikan tindak balas yang serupa dengan yang berikut:

<span>composer require danrovito/pokephp guzzlehttp/guzzle gregwar/image vlucas/phpdotenv
</span>

Sekarang anda boleh mencuba arahan yang sama dari sebelumnya dengan nama pangkalan data yang berbeza:

<span>function(doc){
</span>  <span>if(doc.doc_type == 'pokemon'){
</span>    <span>emit(doc.name, null);
</span>  <span>}
</span><span>}
</span>

dan Couchdb akan berteriak kepada anda:

<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>

untuk ini berfungsi, anda kini perlu membekalkan nama pengguna dan kata laluan anda dalam URL seperti:

<span>git clone git@github.com:elecnix/docker-geocouch.git
</span><span>cd docker-geocouch
</span>

OK, jadi itu? Nah, tidak semestinya kerana satu -satunya perkara yang anda lakukan ialah had operasi pangkalan data yang hanya boleh dilakukan oleh pentadbir pelayan. Ini termasuk perkara seperti membuat pangkalan data baru, memadam pangkalan data, mengurus pengguna, akses penuh ke semua pangkalan data (termasuk jadual sistem), operasi CRUD ke semua dokumen. Ini meninggalkan anda dengan pengguna yang tidak sah yang masih mempunyai kuasa untuk melakukan perkara CRUD pada mana -mana pangkalan data. Anda boleh mencubanya dengan log keluar dari Futon, pilih mana -mana pangkalan data yang anda mahu kekacauan dan melakukan perkara -perkara CRUD di dalamnya. CouchDB masih akan melaksanakan operasi tersebut untuk anda.

Jadi, bagaimana anda memasang lubang yang tinggal? Anda boleh melakukannya dengan membuat dokumen reka bentuk yang akan menyemak sama ada nama pengguna pengguna yang cuba melakukan operasi menulis (masukkan atau mengemas kini) adalah sama dengan nama pengguna yang dibenarkan untuk melakukannya. Dalam Futon, log masuk menggunakan akaun admin admin atau pangkalan data pelayan, pilih pangkalan data yang ingin anda bekerjasama, dan buat dokumen reka bentuk baru. Tetapkan id sebagai _design/blockanonymouswrites, tambahkan medan bernama Validate_doc_update, dan tetapkan nilai kepada yang berikut:

# 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

Versi baru dokumen, dokumen yang sedia ada, dan konteks pengguna diluluskan sebagai hujah untuk fungsi ini. Satu -satunya perkara yang perlu anda periksa ialah userctx yang mengandungi nama pangkalan data, nama pengguna yang melakukan operasi, dan pelbagai peranan yang diberikan kepada pengguna.

SecoBJ juga diluluskan sebagai hujah keempat, tetapi anda tidak perlu bekerja padanya; Itulah sebabnya ia ditinggalkan. Pada asasnya, SecOBJ menerangkan keistimewaan pentadbir yang telah ditetapkan pada pangkalan data.

Sebaik sahaja anda telah menambah nilai, simpan dokumen reka bentuk, log keluar, dan cuba buat dokumen baru atau mengemas kini yang sedia ada dan menonton Couchdb mengadu pada anda.

Cara membuat perakam lokasi pokemon spawn dengan couchdb

Oleh kerana anda hanya memeriksa nama pengguna, anda mungkin berfikir bahawa penyerang hanya boleh meneka nama pengguna dan membekalkan apa -apa nilai kepada kata laluan dan ia akan berfungsi. Nah, tidak semestinya, kerana couchdb pertama memeriksa jika nama pengguna dan kata laluan betul sebelum dokumen reka bentuk bahkan akan dilaksanakan.

Sebagai alternatif, jika anda mempunyai banyak pengguna dalam pangkalan data tunggal, anda juga boleh menyemak peranannya. Fungsi di bawah akan membuang ralat di mana -mana pengguna yang tidak mempunyai peranan "pokemon_master".

<span>docker build -t elecnix/docker-geocouch:1.6.1 .
</span>
Jika anda ingin mengetahui lebih lanjut mengenai cara menjamin CouchDB, pastikan anda menyemak sumber -sumber berikut:

  • Couchdb Panduan Definitif - Keselamatan
  • Panduan Definitif untuk Pengesahan dan Keselamatan CouchDB
  • Ciri -ciri Keselamatan Gambaran Keseluruhan
  • Pengesahan Kemas Kini Dokumen
Mengamankan aplikasi

mari kita bungkus dengan mengemas kini aplikasi untuk menggunakan langkah -langkah keselamatan yang telah anda gunakan untuk pangkalan data. Kemas kini pertama fail .env: Tukar BASE_URI dengan hanya alamat IP dan port, dan kemudian tambahkan nama pengguna dan kata laluan pengguna CouchDB yang telah anda buat.

<span>git clone git@github.com:elecnix/docker-geocouch.git
</span><span>cd docker-geocouch
</span>
Kemudian, kemas kini pembina kelas DB untuk menggunakan butiran baru:

# 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
Kesimpulan

Itu sahaja! Dalam tutorial ini, anda belajar bagaimana membuat aplikasi perakam lokasi Pokemon Spawn dengan CouchDB. Dengan bantuan plugin GeoCouch, anda dapat melakukan pertanyaan spatial, dan anda belajar bagaimana untuk mendapatkan pangkalan data CouchDB anda.

Adakah anda menggunakan Couchdb dalam projek anda? Apa untuk? Mana -mana cadangan / ciri untuk menambah projek kecil ini? Beritahu kami dalam komen!

soalan yang sering ditanya mengenai lokasi Spawn Pokemon

Bagaimana saya dapat mencari lokasi Pokemon Spawn di Pokemon Go?

Pokemon Spawn lokasi di Pokemon Go biasanya ditemui di kawasan dengan aktiviti selular yang tinggi. Kawasan ini boleh termasuk taman, pusat membeli -belah, dan tempat awam yang lain. Aplikasi Pokemon Go menggunakan GPS untuk mengesan lokasi anda dan menanam Pokemon berdasarkan persekitaran anda. Anda juga boleh menggunakan aplikasi pihak ketiga atau laman web seperti pokemap.net untuk mencari lokasi bertelur. Walau bagaimanapun, sedar bahawa menggunakan perkhidmatan pihak ketiga boleh melanggar syarat perkhidmatan Pokemon Go dan boleh menyebabkan larangan.

Biome di Pokemon Go adalah kawasan geografi tertentu yang mempengaruhi jenis pokemon yang bertelur di sana. Sebagai contoh, pokemon jenis air lebih cenderung untuk bertelur berhampiran badan air, manakala Pokemon jenis rumput lebih cenderung untuk bertelur di taman atau hutan. Memahami bioma yang berbeza boleh membantu anda meramalkan di mana jenis Pokemon tertentu mungkin bertelur. Satu kaedah adalah menggunakan pangkalan data seperti Couchdb untuk menyimpan lokasi Pokemon Spawns. Ini melibatkan penggunaan API Pokemon Go untuk mendapatkan data bertelur dan kemudian menyimpan data ini di CouchDB. Anda kemudian boleh menggunakan data ini untuk menganalisis corak spawn dan meramalkan lokasi bertelur masa depan. meramalkan spawns masa depan. Dengan menganalisis data, anda boleh mengenal pasti corak di lokasi dan masa bertelur. Ini dapat membantu anda meramalkan di mana dan bila jenis Pokemon tertentu mungkin bertelur di masa depan.

Adakah terdapat sebarang risiko yang berkaitan dengan menggunakan aplikasi pihak ketiga atau laman web untuk mencari lokasi Pokemon Spawn? Perkhidmatan ini boleh melanggar syarat perkhidmatan Pokemon Go dan boleh menyebabkan larangan. Di samping itu, perkhidmatan ini mungkin tidak selalu memberikan maklumat yang tepat atau terkini. Pokemon spawn lokasi dalam permainan. Mod ini termasuk ciri yang menunjukkan lokasi spawn Pokemon pada peta. Anda boleh menggunakan ciri ini untuk mencari dan menangkap Pokemon dalam permainan.

Itu menyediakan peta lokasi Pokemon Spawn. Peta ini dikemas kini secara real-time dan termasuk maklumat mengenai jenis Pokemon yang sedang berkembang dan lokasi yang tepat. Walau bagaimanapun, sedar bahawa menggunakan perkhidmatan ini boleh melanggar syarat perkhidmatan Pokemon Go dan boleh mengakibatkan larangan. Laman web Pogomap menyediakan peta lokasi Spawn Pokemon. Peta ini dikemas kini secara real-time dan termasuk maklumat mengenai jenis Pokemon yang sedang berkembang dan lokasi yang tepat. Anda boleh menggunakan laman web ini untuk mencari dan menangkap Pokemon di kawasan anda. Ini membantu mengekalkan peta yang terkini dan tepat. Walau bagaimanapun, sedar bahawa pelaporan maklumat palsu boleh menyebabkan larangan dari laman web. lokasi. Sebagai contoh, anda boleh menyertai komuniti atau forum Pokemon GO tempatan di mana pemain berkongsi maklumat mengenai lokasi bertelur. Anda juga boleh menggunakan ciri berdekatan dalam permainan untuk mencari Pokemon yang berdekatan dengan lokasi semasa anda.

Atas ialah kandungan terperinci Cara membuat perakam lokasi pokemon spawn dengan couchdb. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn