Angular-alkalmazás létrehozása az Azure Cosmos DB MongoDB-hez készült API-jával – A Mongoose használata az Azure Cosmos DB-hez való csatlakozáshoz
A KÖVETKEZŐKRE VONATKOZIK: MongoDB
Ez a többrészes oktatóanyag bemutatja, hogyan hozhat létre Node.js alkalmazást az Express és Angular használatával, és hogyan csatlakoztathatja azt az Azure Cosmos DB MongoDB-hez készült API-jával konfigurált Azure Cosmos DB-fiókjához. Ez a cikk az oktatóanyag 5. részét ismerteti, és a 4. részre épít.
Az oktatóanyag ezen részében a következőket fogja végezni:
- A Mongoose használatával csatlakozhat az Azure Cosmos DB-hez.
- Szerezze be az Azure Cosmos DB-kapcsolati sztring.
- Hozza létre a Hero modellt.
- Hozza létre a Hero szolgáltatást a Hero-adatok lekéréséhez.
- Futtassa helyben az alkalmazást.
Ha nem rendelkezik Azure-előfizetéssel, hozzon létre egy ingyenes fiókot a feladatok megkezdése előtt.
Előfeltételek
Az oktatóanyag megkezdése előtt végezze el a 4. rész lépéseit.
Ehhez az oktatóanyaghoz helyileg kell futtatnia az Azure CLI-t. Az Azure CLI 2.0-s vagy újabb verzióját kell telepíteni. A verzió azonosításához futtassa a következőt:
az --version
. Ha telepítenie vagy frissítenie kell az Azure CLI-t, olvassa el az Azure CLI 2.0 telepítése című témakört.Ez az oktatóanyag lépésről lépésre végigvezeti az alkalmazás létrehozásának lépésein. Ha le szeretné tölteni a kész projektet, a kész alkalmazást az angular-cosmosdb adattárból töltheti le a GitHubról.
Csatlakozás a Mongoose használatával
A Mongoose a MongoDB és Node.js objektumadat-modellezési (ODM-) kódtára. A Mongoose használatával csatlakozhat az Azure Cosmos DB-fiókjához. A Mongoose telepítéséhez és az Azure Cosmos DB-hez való csatlakozáshoz kövesse az alábbi lépéseket:
Telepítse a mongoose npm modult, amely a MongoDB-vel való kommunikációhoz használt API.
npm install mongoose@5.13.15 --save
Fontos
A MongoDB-hez készült Azure Cosmos DB kompatibilis a Mongoose akár verziójával
5.13.15
is. További információt a Mongoose GitHub-adattárban talál a probléma megvitatásakor .A kiszolgálómappában hozzon létre egy mongo.jsnevű fájlt. Ehhez a fájlhoz hozzáadja az Azure Cosmos DB-fiók kapcsolati adatait.
Másolja a következő kódot a mongo.js fájlba. A kód a következő funkciókat biztosítja:
A Mongoose használatát igényli.
Felülbírálja a Mongo-ígéretet, hogy az ES6/ES2015 és újabb verziókba beépített alapszintű ígéretet használja.
Meghív egy env-fájlt, amely lehetővé teszi bizonyos dolgok beállítását attól függően, hogy előkészítési, éles vagy fejlesztési fázisban van-e. Ezt a fájlt a következő szakaszban fogja létrehozni.
Tartalmazza a MongoDB kapcsolati sztring, amely az env fájlban van beállítva.
Létrehoz egy connect függvényt, amely meghívja a Mongoose-t.
const mongoose = require('mongoose'); /** * Set to Node.js native promises * Per https://mongoosejs.com/docs/promises.html */ mongoose.Promise = global.Promise; const env = require('./env/environment'); // eslint-disable-next-line max-len const mongoUri = `mongodb://${env.accountName}:${env.key}@${env.accountName}.documents.azure.com:${env.port}/${env.databaseName}?ssl=true`; function connect() { mongoose.set('debug', true); return mongoose.connect(mongoUri, { useMongoClient: true }); } module.exports = { connect, mongoose };
Az Explorer panel Kiszolgáló területén hozzon létre egy környezet nevű mappát. A környezeti mappában hozzon létre egy environment.jsnevű fájlt.
A mongo.js fájlban meg kell adni a
dbName
, akey
és acosmosPort
paraméterek értékeit. Másolja a következő kódot a environment.js fájlba:// TODO: replace if yours are different module.exports = { accountName: 'your-cosmosdb-account-name-goes-here', databaseName: 'admin', key: 'your-key-goes-here', port: 10255 };
A kapcsolati sztring lekérése
Az alkalmazás Azure Cosmos DB-hez való csatlakoztatásához frissítenie kell az alkalmazás konfigurációs beállításait. A beállítások frissítéséhez kövesse az alábbi lépéseket:
A Azure Portal kérje le az Azure Cosmos DB-fiók portszámát, Az Azure Cosmos DB-fiók nevét és elsődleges kulcsértékeit.
A environment.js fájlban módosítsa a értékét 10255-ös értékre
port
.const port = 10255;
A environment.js fájlban módosítsa a értékét
accountName
az oktatóanyag 4. részében létrehozott Azure Cosmos DB-fiók nevére.Kérje le az Azure Cosmos DB-fiók elsődleges kulcsát az alábbi parancssori paranccsal a terminálablakban:
az cosmosdb list-keys --name <cosmosdb-name> -g myResourceGroup
<A cosmosdb-name> az oktatóanyag 4. részében létrehozott Azure Cosmos DB-fiók neve.
Másolja az elsődleges kulcsot a environment.js fájlba
key
értékként.
Az alkalmazás most már rendelkezik az Azure Cosmos DB-hez való csatlakozáshoz szükséges összes információval.
Főképmodell létrehozása
Ezután meg kell határoznia az Azure Cosmos DB-ben tárolni kívánt adatok sémáját egy modellfájl definiálásával. Az alábbi lépések végrehajtásával hozzon létre egy főképmodellt , amely meghatározza az adatok sémáját:
Az Explorer panel kiszolgálómappája alatt hozzon létre egy hero.model.jsnevű fájlt.
Másolja a következő kódot a hero.model.js fájlba. A kód a következő funkciókat biztosítja:
- A Mongoose használatát igényli.
- Egy új sémát hoz létre egy azonosítóval, egy névvel és egy üzenettel.
- Létrehoz egy modellt a sémával.
- Exportálja a modellt.
- Nevezze el a heroes gyűjteményt ( a Heros helyett, amely a gyűjtemény alapértelmezett neve a Mongoose többes számú elnevezési szabályai alapján).
const mongoose = require('mongoose'); const Schema = mongoose.Schema; const heroSchema = new Schema( { id: { type: Number, required: true, unique: true }, name: String, saying: String }, { collection: 'Heroes' } ); const Hero = mongoose.model('Hero', heroSchema); module.exports = Hero;
Főképszolgáltatás létrehozása
A főmodell létrehozása után meg kell határoznia egy szolgáltatást, amely beolvassa az adatokat, valamint listázási, létrehozási, törlési és frissítési műveleteket hajt végre. Az alábbi lépésekkel hozzon létre egy Hero szolgáltatást , amely lekérdezi az adatokat az Azure Cosmos DB-ből:
Az Explorer panel kiszolgálómappája alatt hozzon létre egy hero.service.jsnevű fájlt.
Másolja a következő kódot a hero.service.js fájlba. A kód a következő funkciókat biztosítja:
- Lekéri a létrehozott modellt.
- Csatlakozik az adatbázishoz.
- Létrehoz egy változót
docquery
, amely ahero.find
metódus használatával definiál egy lekérdezést, amely az összes hőst visszaadja. - Lefuttat egy lekérdezést a
docquery.exec
függvénnyel, amely ígéretet ad az összes főhős listájának lekérésére, ahol a válasz állapota 200. - A hibaüzenetet küldi vissza, ha az állapot 500.
- Lekéri a hősöket, mert modulokat használunk.
const Hero = require('./hero.model'); require('./mongo').connect(); function getHeroes() { const docquery = Hero.find({}); docquery .exec() .then(heroes => { res.status(200).json(heroes); }) .catch(error => { res.status(500).send(error); return; }); } module.exports = { getHeroes };
Útvonalak konfigurálása
Ezután útvonalakat kell beállítania a kérések lekéréséhez, létrehozásához, olvasásához és törléséhez szükséges URL-címek kezeléséhez. Az útválasztási metódusok visszahívási függvényeket (más néven kezelőfüggvényeket) határoznak meg. Ezek a függvények akkor lesznek meghívva, amikor az alkalmazás kérést kap a megadott végponthoz és HTTP-metódushoz. Az alábbi lépésekkel adja hozzá a Hero szolgáltatást, és határozza meg az útvonalakat:
A Visual Studio Code-ban aroutes.js fájlban tegye megjegyzésbe a
res.send
minta főképadatokat küldő függvényt. Adjon hozzá egy sort a függvény meghívásáhozheroService.getHeroes
.router.get('/heroes', (req, res) => { heroService.getHeroes(req, res); // res.send(200, [ // {"id": 10, "name": "Starlord", "saying": "oh yeah"} // ]) });
A routes.js fájlban
require
a főszolgáltatás:const heroService = require('./hero.service');
A hero.service.js fájlban frissítse a
getHeroes
függvényt, hogy a ésres
a paramétereket areq
következőképpen vegye fel:function getHeroes(req, res) {
Szánjunk egy percet az előző kód áttekintésére és végigjárására. Először belépünk a index.js fájlba, amely beállítja a csomópontkiszolgálót. Figyelje meg, hogy beállítja és meghatározza az útvonalakat. Ezután a routes.js fájl beszél a főszolgáltatással, és azt mondja neki, hogy szerezze be a függvényeket, például a getHeroes-t, és adja át a kérést és a választ. A hero.service.js fájl lekéri a modellt, és csatlakozik a Mongo-hoz. Ezután végrehajtja a getHeroes parancsot , amikor meghívjuk, és visszaad egy 200-ból álló választ.
Az alkalmazás futtatása
Ezután futtassa az alkalmazást az alábbi lépésekkel:
A Visual Studio Code-ban mentse az összes módosítást. A bal oldalon válassza a Hibakeresés gombot , majd a Hibakeresés indítása gombot .
Most váltson a böngészőre. Nyissa meg a Fejlesztői eszközök és a Hálózat lapot. Nyissa meg a
http://localhost:3000
elemet, és itt láthatja az alkalmazást.
Az alkalmazásban még nincsenek hősök tárolva. Az oktatóanyag következő részében put, push és delete funkciókat adunk hozzá. Ezután hozzáadhatjuk, frissíthetjük és törölhetjük a főképeket a felhasználói felületről mongoose-kapcsolatok használatával az Azure Cosmos DB-adatbázissal.
Az erőforrások eltávolítása
Ha már nincs szüksége az erőforrásokra, törölheti az erőforráscsoportot, az Azure Cosmos DB-fiókot és az összes kapcsolódó erőforrást. Az erőforráscsoport törléséhez kövesse az alábbi lépéseket:
- Lépjen arra az erőforráscsoportra, ahol létrehozta az Azure Cosmos DB-fiókot.
- Válassza az Erőforráscsoport törlése elemet.
- Erősítse meg a törölni kívánt erőforráscsoport nevét, és válassza a Törlés lehetőséget.
Következő lépések
Folytassa az oktatóanyag 6. részével a Post, Put és Delete függvények alkalmazáshoz való hozzáadásához:
Kapacitástervezést szeretne végezni az Azure Cosmos DB-be való migráláshoz? A kapacitástervezéshez használhatja a meglévő adatbázisfürtre vonatkozó információkat.
- Ha csak a meglévő adatbázisfürtben lévő virtuális magok és kiszolgálók számát ismeri, olvassa el a kérelemegységek virtuális magok vagy vCPU-k használatával történő becslését ismertető cikket.
- Ha ismeri az aktuális adatbázis számítási feladatának jellemző kérési arányait, olvassa el a kérelemegységek becslését az Azure Cosmos DB Capacity Planner használatával