Share via


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:

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

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

  3. 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
      };
      
  4. 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.

  5. A mongo.js fájlban meg kell adni a dbName, a keyés a cosmosPort 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:

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

  2. A environment.js fájlban módosítsa a értékét 10255-ös értékre port .

    const port = 10255;
    
  3. 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.

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

  5. 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:

  1. Az Explorer panel kiszolgálómappája alatt hozzon létre egy hero.model.jsnevű fájlt.

  2. 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:

  1. Az Explorer panel kiszolgálómappája alatt hozzon létre egy hero.service.jsnevű fájlt.

  2. 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 a hero.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:

  1. 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ához heroService.getHeroes .

    router.get('/heroes', (req, res) => {
      heroService.getHeroes(req, res);
    //  res.send(200, [
    //      {"id": 10, "name": "Starlord", "saying": "oh yeah"}
    //  ])
    });
    
  2. A routes.js fájlban require a főszolgáltatás:

    const heroService = require('./hero.service'); 
    
  3. A hero.service.js fájlban frissítse a getHeroes függvényt, hogy a és res a paramétereket a req 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:

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

  2. 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:3000elemet, és itt láthatja az alkalmazást.

    Új Azure Cosmos DB-fiók az Azure Portalon

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:

  1. Lépjen arra az erőforráscsoportra, ahol létrehozta az Azure Cosmos DB-fiókot.
  2. Válassza az Erőforráscsoport törlése elemet.
  3. 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.