Verwenden des Node.js SDK für Mobile AppsHow to use the Mobile Apps Node.js SDK

Hinweis

Visual Studio App Center unterstützt End-to-End- und integrierte Dienste, die für die Entwicklung mobiler Apps von zentraler Bedeutung sind.Visual Studio App Center supports end to end and integrated services central to mobile app development. Entwickler können Build-, Test- und Verteilungsdienste nutzen, um eine Pipeline für Continuous Integration und Delivery einzurichten.Developers can use Build, Test and Distribute services to set up Continuous Integration and Delivery pipeline. Nach der Bereitstellung der App können Entwickler den Status und die Nutzung ihrer App mithilfe der Analyse- und Diagnosedienste überwachen und mit Benutzern über den Pushdienst interagieren.Once the app is deployed, developers can monitor the status and usage of their app using the Analytics and Diagnostics services, and engage with users using the Push service. Entwickler können auch den Authentifizierungsdienst nutzen, um ihre Benutzer zu authentifizieren, und den Datendienst, um App-Daten dauerhaft in der Cloud zu speichern und zu synchronisieren.Developers can also leverage Auth to authenticate their users and Data service to persist and sync app data in the cloud.

Falls Sie Clouddienste in Ihre mobile Anwendung integrieren möchten, sollten Sie sich noch heute für App Center registrieren.If you are looking to integrate cloud services in your mobile application, sign up with App Center today.

Dieser Artikel enthält ausführliche Informationen und Beispiele, die veranschaulichen, wie Sie im Mobile Apps-Feature von Azure App Service ein Node.js-Back-End verwenden.This article provides detailed information and examples that show how to work with a Node.js back end in the Mobile Apps feature of Azure App Service.

EinführungIntroduction

Mobile Apps bietet eine Funktion zum Hinzufügen einer für Mobilgeräte optimierten Datenzugriff-Web-API zu einer Webanwendung.Mobile Apps provides the capability to add a mobile-optimized data access Web API to a web application. Das Mobile Apps SDK steht für ASP.NET- und Node.js-Webanwendungen zur Verfügung.The Mobile Apps SDK is provided for ASP.NET and Node.js web applications. Das SDK ermöglicht die folgenden Vorgänge:The SDK provides the following operations:

  • Tabellenvorgänge (Lesen, Einfügen, Aktualisieren, Löschen) für den DatenzugriffTable operations (read, insert, update, delete) for data access
  • Vorgänge der benutzerdefinierten APICustom API operations

Beide Vorgänge sorgen für Authentifizierung über alle Identitätsanbieter hinweg, die in Azure App Service zulässig sind.Both operations provide for authentication across all identity providers that Azure App Service allows. Hierzu gehören Identitätsanbieter von sozialen Netzwerken wie Facebook, Twitter, Google und Microsoft sowie Azure Active Directory für die Identität in Unternehmen.These providers include social identity providers such as Facebook, Twitter, Google, and Microsoft, as well as Azure Active Directory for enterprise identity.

Beispiele für die einzelnen Anwendungsfälle finden Sie im Verzeichnis mit den Beispielen auf GitHub.You can find samples for each use case in the samples directory on GitHub.

Unterstützte PlattformenSupported platforms

Das Mobile Apps Node.js SDK unterstützt das aktuelle LTS-Release von Node und höher.The Mobile Apps Node.js SDK supports the current LTS release of Node and later. Derzeit ist Node v4.5.0 die neueste LTS-Version.Currently, the latest LTS version is Node v4.5.0. Andere Node-Versionen funktionieren möglicherweise, werden aber nicht unterstützt.Other versions of Node might work but are not supported.

Das Mobile Apps Node.js SDK unterstützt zwei Datenbanktreiber:The Mobile Apps Node.js SDK supports two database drivers:

  • Der node-mssql-Treiber unterstützt Azure SQL-Datenbank und lokale SQL Server-Instanzen.The node-mssql driver supports Azure SQL Database and local SQL Server instances.
  • Der sqlite3-Treiber unterstützt SQLite-Datenbanken nur auf einer einzigen Instanz.The sqlite3 driver supports SQLite databases on a single instance only.

Erstellen eines einfachen Node.js-Back-Ends über die BefehlszeileCreate a basic Node.js back end by using the command line

Jedes Mobile Apps-Node.js-Back-End verhält sich am Anfang wie eine ExpressJS-Anwendung.Every Mobile Apps Node.js back end starts as an ExpressJS application. ExpressJS ist das beliebteste Webdienst-Framework für Node.js.ExpressJS is the most popular web service framework available for Node.js. Sie können eine Express -Basisanwendung wie folgt erstellen:You can create a basic Express application as follows:

  1. Erstellen Sie in einem Befehlsfenster oder PowerShell-Fenster ein Verzeichnis für Ihr Projekt:In a command or PowerShell window, create a directory for your project:

     mkdir basicapp
    
  2. Führen Sie npm init aus, um die Paketstruktur zu initialisieren:Run npm init to initialize the package structure:

     cd basicapp
     npm init
    

    Im Rahmen des Befehls npm init werden einige Fragen gestellt, um das Projekt initialisieren zu können.The npm init command asks a set of questions to initialize the project. Hier finden Sie eine Beispielausgabe:See the example output:

    Ausgabe von npm init

  3. Installieren Sie die Bibliotheken express und azure-mobile-apps aus dem npm-Repository:Install the express and azure-mobile-apps libraries from the npm repository:

     npm install --save express azure-mobile-apps
    
  4. Erstellen Sie die Datei „app.js“, um den grundlegenden mobilen Server zu implementieren:Create an app.js file to implement the basic mobile server:

    var express = require('express'),
        azureMobileApps = require('azure-mobile-apps');
    
    var app = express(),
        mobile = azureMobileApps();
    
    // Define a TodoItem table.
    mobile.tables.add('TodoItem');
    
    // Add the Mobile API so it is accessible as a Web API.
    app.use(mobile);
    
    // Start listening on HTTP.
    app.listen(process.env.PORT || 3000);
    

Diese Anwendung erstellt eine für Mobilgeräte optimierte Web-API mit einem einzelnen Endpunkt (/tables/TodoItem), der mithilfe eines dynamischen Schemas nicht authentifizierten Zugriff auf einen zugrunde liegenden SQL-Datenspeicher bereitstellt.This application creates a mobile-optimized Web API with a single endpoint (/tables/TodoItem) that provides unauthenticated access to an underlying SQL data store by using a dynamic schema. Mit dieser Anwendung können Sie die Schnellstarts für die Clientbibliothek nachvollziehen:It is suitable for following the client library quickstarts:

Den Code für diese einfache Anwendung finden Sie im basicapp-Beispiel auf GitHub.You can find the code for this basic application in the basicapp sample on GitHub.

Erstellen eines Node.js-Back-Ends mithilfe von Visual Studio 2015Create a Node.js back end by using Visual Studio 2015

Für Visual Studio 2015 ist eine Erweiterung zum Entwickeln der Node.js-Anwendung in der IDE erforderlich.Visual Studio 2015 requires an extension to develop Node.js applications within the IDE. Um zu beginnen, installieren Sie die Node.js-Tools 1.1 für Visual Studio.To start, install the Node.js Tools 1.1 for Visual Studio. Wenn Sie die Installation abschließen, erstellen Sie eine Express 4.x-Anwendung:When you finish the installation, create an Express 4.x application:

  1. Öffnen Sie das Dialogfeld Neues Projekt (über Datei > Neu > Projekt).Open the New Project dialog box (from File > New > Project).

  2. Erweitern Sie Vorlagen > JavaScript > Node.js.Expand Templates > JavaScript > Node.js.

  3. Wählen Sie die Azure Node.js Express 4-Basisanwendung aus.Select Basic Azure Node.js Express 4 Application.

  4. Geben Sie den Projektnamen ein.Fill in the project name. Klicken Sie auf OK.Select OK.

    Visual Studio 2015 – neues Projekt

  5. Klicken Sie mit der rechten Maustaste auf den Knoten npm, und wählen Sie Neue npm-Pakete installieren aus.Right-click the npm node and select Install New npm packages.

  6. Nach der Erstellung der ersten Node.js-Anwendung müssen Sie den npm-Katalog möglicherweise aktualisieren.You might need to refresh the npm catalog after you create your first Node.js application. Klicken Sie bei Bedarf auf Aktualisieren.Select Refresh if necessary.

  7. Geben Sie in das Suchfeld azure-mobile-apps ein.Enter azure-mobile-apps in the search box. Wählen Sie das Paket azure-mobile-apps 2.0.0 aus, und klicken Sie dann auf Paket installieren.Select the azure-mobile-apps 2.0.0 package, and then select Install Package.

    Neue npm-Pakete installieren

  8. Klicken Sie auf Schließen.Select Close.

  9. Öffnen Sie die Datei „app.js“, um Unterstützung für das Mobile Apps SDK hinzuzufügen.Open the app.js file to add support for the Mobile Apps SDK. Fügen Sie unten in den require-Bibliotheksanweisungen in Zeile 6 den folgenden Code hinzu:At line 6 at the bottom of the library require statements, add the following code:

    var bodyParser = require('body-parser');
    var azureMobileApps = require('azure-mobile-apps');
    

    Fügen Sie ungefähr bei Zeile 27 nach den anderen app.use-Anweisungen den folgenden Code hinzu:At approximately line 27 after the other app.use statements, add the following code:

    app.use('/users', users);
    
    // Mobile Apps initialization
    var mobile = azureMobileApps();
    mobile.tables.add('TodoItem');
    app.use(mobile);
    

    Speichern Sie die Datei .Save the file.

  10. Führen Sie die Anwendung entweder lokal aus (die API wird unter http://localhost:3000 bereitgestellt), oder veröffentlichen Sie sie in Azure.Either run the application locally (the API is served on http://localhost:3000) or publish to Azure.

Erstellen eines Node.js-Back-Ends mithilfe des Azure-PortalsCreate a Node.js back end by using the Azure portal

Sie können ein Mobile Apps-Back-End direkt im Azure-Portal erstellen.You can create a Mobile Apps back end right in the Azure portal. Sie können entweder die folgenden Schritte ausführen oder anhand der Anweisungen im Tutorial Erstellen einer mobilen App einen Client und einen Server erstellen.You can either complete the following steps or create a client and server together by following the Create a mobile app tutorial. Das Tutorial enthält eine vereinfachte Version dieser Anweisungen und eignet sich am besten für Proof of Concept-Projekte.The tutorial contains a simplified version of these instructions and is best for proof-of-concept projects.

  1. Melden Sie sich beim Azure-Portal an.Sign in at the Azure portal.

  2. Wählen Sie + NEU > Web + Mobil > Mobile App aus, und geben Sie einen Namen für Ihr Mobile Apps-Back-End an.Select +NEW > Web + Mobile > Mobile App, and then provide a name for your Mobile Apps back end.

  3. Wählen Sie unter Ressourcengruppe eine vorhandene Ressourcengruppe aus, oder erstellen Sie eine neue. (Verwenden Sie dabei den gleichen Namen wie für die App.)For Resource Group, select an existing resource group, or create a new one (by using the same name as your app).

  4. Für den App Service-Plan ist der Standardplan (im Tarif Standard) ausgewählt.For App Service plan, the default plan (in the Standard tier) is selected. Sie können auch einen anderen Plan auswählen oder einen neuen Plan erstellen.You can also select a different plan, or create a new one.

    Die Einstellungen für den App Service-Plan bestimmen den Standort, die Funktionen, die Kosten und die Computeressourcen Ihrer App.The App Service plan's settings determine the location, features, cost, and compute resources associated with your app. Weitere Informationen zu App Service-Plänen sowie zum Erstellen eines neuen Plans in einem anderen Tarif und am gewünschten Standort finden Sie unter Azure App Service-Pläne – Detaillierte Übersicht.For more about App Service plans and how to create a new plan in a different pricing tier and in your desired location, see Azure App Service plans in-depth overview.

  5. Klicken Sie auf Erstellen.Select Create. In diesem Schritt wird das Back-End für Mobile Apps erstellt.This step creates the Mobile Apps back end.

  6. Klicken Sie im Bereich Einstellungen für das neue Mobile Apps-Back-End auf Schnellstart > Ihre Client-App-Plattform > Datenbank verbinden.In the Settings pane for the new Mobile Apps back end, select Quick start > your client app platform > Connect a database.

    Auswahl für die Verbindung einer Datenbank

  7. Klicken Sie im Bereich Datenverbindung hinzufügen auf SQL-Datenbank > Neue Datenbank erstellen.In the Add data connection pane, select SQL Database > Create a new database. Geben Sie den Datenbanknamen ein, und wählen Sie einen Tarif und dann Server aus.Enter the database name, choose a pricing tier, and then select Server. Sie können diese neue Datenbank wiederverwenden.You can reuse this new database. Wenn Sie bereits eine Datenbank am gleichen Standort haben, können Sie stattdessen eine vorhandene Datenbank verwenden.If you already have a database in the same location, you can instead choose Use an existing database. Die Verwendung einer Datenbank an einem anderen Standort wird aufgrund der Kosten für die Bandbreite und höherer Latenz nicht empfohlen.We don't recommend the use of a database in a different location, due to bandwidth costs and higher latency.

    Auswählen einer Datenbank

  8. Geben Sie im Bereich Neuer Server im Feld Servername einen eindeutigen Servernamen ein, geben Sie einen Anmeldenamen und ein Kennwort an, wählen Sie Azure-Diensten Zugriff auf den Server erlauben aus, und klicken Sie anschließend auf OK.In the New server pane, enter a unique server name in the Server name box, provide a login and password, select Allow Azure services to access server, and select OK. Mit diesem Schritt wird die neue Datenbank erstellt.This step creates the new database.

  9. Klicken Sie im Bereich Datenverbindung hinzufügen auf Verbindungszeichenfolge, geben Sie den Anmeldenamen und das Kennwort für Ihre Datenbank ein, und wählen Sie OK aus.Back in the Add data connection pane, select Connection string, enter the login and password values for your database, and select OK.

    Warten Sie einige Minuten, bis die Datenbank bereitgestellt wurde, bevor Sie fortfahren.Wait a few minutes for the database to be deployed successfully before you proceed.

Wählen Sie im Bereich Erste Schritte unter Erstellen einer Tabellen-API die Option Node.js als Back-End-Sprache aus.Back in the Get started pane, under Create a table API, choose Node.js as your back-end language. Aktivieren Sie das Kontrollkästchen Ich bestätige, dass durch diese Aktion alle Websiteinhalte überschrieben werden, und klicken Sie auf TodoItem-Tabelle erstellen.Select the box for I acknowledge that this will overwrite all site contents, and then select Create TodoItem table.

Herunterladen des Schnellstart-Codeprojekts für das Node.js-Back-End mit GitDownload the Node.js back-end quickstart code project by using Git

Wenn Sie im Portalbereich Schnellstart ein Node.js-Mobile Apps-Back-End erstellen, wird ein Node.js-Projekt für Sie erstellt und auf Ihrer Website bereitgestellt.When you create a Node.js Mobile Apps back end by using the portal's Quick start pane, a Node.js project is created for you and deployed to your site. Im Portal können Sie Tabellen und APIs hinzufügen und Codedateien für das Node.js-Back-End bearbeiten.In the portal, you can add tables and APIs, and edit code files for the Node.js back end. Sie können auch verschiedene Bereitstellungstools zum Herunterladen des Back-End-Projekts verwenden, um Tabellen und APIs hinzuzufügen oder zu ändern und das Projekt dann erneut zu veröffentlichen.You can also use various deployment tools to download the back-end project so that you can add or modify tables and APIs, and then republish the project. Weitere Informationen finden Sie im Azure App Service-Bereitstellungshandbuch.For more information, see the Azure App Service deployment guide.

Beim folgenden Verfahren wird ein Git-Repository verwendet, um den Schnellstart-Projektcode herunterzuladen:The following procedure uses a Git repository to download the quickstart project code:

  1. Installieren Sie Git, falls Sie dies noch nicht getan haben.Install Git, if you haven't already done so. Die erforderlichen Schritte zum Installieren von Git variieren je nach Betriebssystem.The steps required to install Git vary between operating systems. Informationen zu betriebssystemspezifischen Distributionen und zur Installation finden Sie unter Installieren von Git.For operating system-specific distributions and installation guidance, see Installing Git.

  2. Lesen Sie die Informationen unter Lokale Git-Bereitstellung in Azure App Service, um das Git-Repository für Ihre Back-End-Website zu aktivieren.See Prepare your repository to enable the Git repository for your back-end site. Notieren Sie sich den Benutzernamen und das Kennwort der Bereitstellung.Make a note of the deployment username and password.

  3. Notieren Sie sich die Einstellung für die Git-Klon-URL im Bereich für Ihr Mobile App-Back-End.In the pane for your Mobile Apps back end, make a note of the Git clone URL setting.

  4. Führen Sie den Befehl git clone mit der Git-Klon-URL aus.Execute the git clone command by using the Git clone URL. Geben Sie bei entsprechender Aufforderung Ihr Kennwort ein, wie im folgenden Beispiel gezeigt:Enter your password when required, as in the following example:

     $ git clone https://username@todolist.scm.azurewebsites.net:443/todolist.git
    
  5. Navigieren Sie zum lokalen Verzeichnis (im obigen Beispiel ist dies /todolist). Sie sehen, dass Projektdateien heruntergeladen wurden.Browse to the local directory (/todolist in the preceding example), and notice that project files have been downloaded. Suchen Sie die todoitem.json-Datei im /tables-Verzeichnis.Locate the todoitem.json file in the /tables directory. Diese Datei definiert Berechtigungen für die Tabelle.This file defines permissions on the table. Suchen Sie im gleichen Verzeichnis auch die todoitem.js-Datei.Also find the todoitem.js file in the same directory. Sie definiert die CRUD-Vorgangsskripts für die Tabelle.It defines the CRUD operation scripts for the table.

  6. Wenn Sie Projektdateien geändert haben, führen Sie die folgenden Befehle aus, um die Änderungen hinzuzufügen, zu committen und sie dann auf die Website hochzuladen:After you make changes to project files, run the following commands to add, commit, and then upload the changes to the site:

     $ git commit -m "updated the table script"
     $ git push origin master
    

    Wenn Sie dem Projekt neue Dateien hinzufügen, müssen Sie zuerst den Befehl git add . ausführen.When you add new files to the project, you first need to run the git add . command.

Die Website wird jeweils neu veröffentlicht, wenn ein neuer Satz mit Commits per Pushvorgang auf die Website übertragen wird.The site is republished every time a new set of commits is pushed to the site.

Veröffentlichen des Node.js-Back-Ends in AzurePublish your Node.js back end to Azure

Microsoft Azure bietet viele Verfahren zum Veröffentlichen Ihres Mobile Apps-Node.js-Back-Ends im Azure-Dienst.Microsoft Azure provides many mechanisms for publishing your Mobile Apps Node.js back end to the Azure service. Hierzu gehören die Nutzung von Bereitstellungstools, die in Visual Studio integriert sind, Befehlszeilentools und Optionen für die fortlaufende Bereitstellung, die auf der Quellcodeverwaltung basieren.These mechanisms include deployment tools integrated into Visual Studio, command-line tools, and continuous deployment options based on source control. Weitere Informationen finden Sie im Azure App Service-Bereitstellungshandbuch.For more information, see the Azure App Service deployment guide.

Azure App Service bietet spezielle Hinweise für Node.js-Anwendungen, die Sie vor dem Veröffentlichen des Back-Ends lesen sollten:Azure App Service has specific advice for Node.js applications that you should review before you publish the back end:

Aktivieren einer Startseite für Ihre AnwendungEnable a home page for your application

Viele Anwendungen sind eine Kombination aus Web-Apps und mobilen Apps.Many applications are a combination of web and mobile apps. Sie können das ExpressJS-Framework verwenden, um diese beiden Aspekte zu kombinieren.You can use the ExpressJS framework to combine the two facets. In manchen Fällen möchten Sie jedoch vielleicht nur eine Mobilschnittstelle implementieren.Sometimes, however, you might want to only implement a mobile interface. Es ist hilfreich, eine Startseite einzurichten, um sicherzustellen, dass der App-Dienst betriebsbereit ist und ausgeführt wird.It's useful to provide a home page to ensure that the app service is up and running. Sie können entweder Ihre eigene Startseite bereitstellen oder eine temporäre Startseite aktivieren.You can either provide your own home page or enable a temporary home page. Zum Aktivieren einer temporären Startseite verwenden Sie folgenden Code, um Mobile Apps zu instanziieren:To enable a temporary home page, use the following code to instantiate Mobile Apps:

var mobile = azureMobileApps({ homePage: true });

Wenn diese Option nur bei der lokalen Entwicklung zur Verfügung stehen soll, können Sie diese Einstellung zu Ihrer azureMobile.js-Datei hinzufügen.If you only want this option available when developing locally, you can add this setting to your azureMobile.js file.

TabellenvorgängeTable operations

Das Node.js Server SDK für „azure-mobile-apps“ bietet Mechanismen, mit denen Sie in Azure SQL-Datenbank gespeicherte Datentabellen als Web-API verfügbar machen können.The azure-mobile-apps Node.js Server SDK provides mechanisms to expose data tables stored in Azure SQL Database as a Web API. Fünf Vorgänge werden bereitgestellt:It provides five operations:

VorgangOperation BESCHREIBUNGDescription
GET /tables/TabellennameGET /tables/tablename Ruft alle Datensätze der Tabelle ab.Get all records in the table.
GET /tables/Tabellenname/:idGET /tables/tablename/:id Ruft einen bestimmten Datensatz der Tabelle ab.Get a specific record in the table.
POST /tables/TabellennamePOST /tables/tablename Erstellt einen Datensatz in der Tabelle.Create a record in the table.
PATCH /tables/Tabellenname/:idPATCH /tables/tablename/:id Aktualisiert einen Datensatz in der Tabelle.Update a record in the table.
DELETE /tables/Tabellenname/:idDELETE /tables/tablename/:id Löscht einen Datensatz in der Tabelle.Delete a record in the table.

Diese Web-API unterstützt OData und erweitert das Tabellenschema, um die Synchronisierung von Offlinedaten zu unterstützen.This Web API supports OData and extends the table schema to support offline data sync.

Definieren von Tabellen mit einem dynamischen SchemaDefine tables by using a dynamic schema

Bevor Sie eine Tabelle verwenden können, müssen Sie sie definieren.Before you can use a table, you must define it. Sie können Tabellen mit einem statischen Schema (Sie definieren die Spalten im Schema) oder dynamisch (das SDK steuert das Schema basierend auf eingehenden Anforderungen) definieren.You can define tables by using a static schema (where you define the columns in the schema) or dynamically (where the SDK controls the schema based on incoming requests). Außerdem können Sie bestimmte Aspekte der Web-API steuern, indem Sie der Definition JavaScript-Code hinzufügen.In addition, you can control specific aspects of the Web API by adding JavaScript code to the definition.

Eine bewährte Methode hierbei lautet: Definieren Sie jede Tabelle in einer JavaScript-Datei im Verzeichnis tables, und verwenden Sie dann die tables.import()-Methode, um die Tabellen zu importieren.As a best practice, you should define each table in a JavaScript file in the tables directory, and then use the tables.import() method to import the tables. Zum Erweitern des grundlegenden App-Beispiels passen Sie die Datei „app.js“ an:Extending the basic-app sample, you would adjust the app.js file:

var express = require('express'),
    azureMobileApps = require('azure-mobile-apps');

var app = express(),
    mobile = azureMobileApps();

// Define the database schema that is exposed.
mobile.tables.import('./tables');

// Provide initialization of any tables that are statically defined.
mobile.tables.initialize().then(function () {
    // Add the Mobile API so it is accessible as a Web API.
    app.use(mobile);

    // Start listening on HTTP.
    app.listen(process.env.PORT || 3000);
});

Definieren Sie die Tabelle in „./tables/TodoItem.js“:Define the table in ./tables/TodoItem.js:

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Additional configuration for the table goes here.

module.exports = table;

Tabellen verwenden standardmäßig ein dynamisches Schema.Tables use a dynamic schema by default. Zum globalen Deaktivieren des dynamischen Schemas legen Sie die App-Einstellung MS_DynamicSchema im Azure-Portal auf „false“ fest.To turn off the dynamic schema globally, set the MS_DynamicSchema app setting to false in the Azure portal.

Ein vollständiges Beispiel finden Sie im todo-Beispiel auf GitHub.You can find a complete example in the todo sample on GitHub.

Definieren von Tabellen mit einem statischen SchemaDefine tables by using a static schema

Sie können die Spalten explizit definieren, die über die Web-API verfügbar gemacht werden sollen.You can explicitly define the columns to expose via the Web API. Das Node.js SDK für „azure-mobile-apps“ fügt der von Ihnen bereitgestellten Liste automatisch alle zusätzlichen Spalten hinzu, die für die Synchronisierung von Offlinedaten benötigt werden.The azure-mobile-apps Node.js SDK automatically adds any extra columns required for offline data sync to the list that you provide. Für die Schnellstart-Clientanwendungen ist beispielsweise eine Tabelle mit zwei Spalten erforderlich: text (eine Zeichenfolge) und complete (ein boolescher Wert).For example, the quickstart client applications require a table with two columns: text (a string) and complete (a Boolean).
Die Tabelle kann wie folgt in der JavaScript-Datei mit der Tabellendefinition (im Verzeichnis tables) festgelegt werden:The table can be defined in the table definition JavaScript file (located in the tables directory) as follows:

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Define the columns within the table.
table.columns = {
    "text": "string",
    "complete": "boolean"
};

// Turn off the dynamic schema.
table.dynamicSchema = false;

module.exports = table;

Wenn Sie Tabellen statisch definieren, müssen Sie auch die tables.initialize()-Methode aufrufen, um das Datenbankschema beim Starten zu erstellen.If you define tables statically, you must also call the tables.initialize() method to create the database schema on startup. Die Methode tables.initialize() gibt ein Promise-Objekt zurück, um sicherzustellen, dass der Webdienst erst dann Anforderungen verarbeitet, nachdem die Datenbank initialisiert wurde.The tables.initialize() method returns a promise so that the web service does not serve requests before the database is initialized.

Verwenden von SQL Server Express als Entwicklungsdatenspeicher auf Ihrem lokalen ComputerUse SQL Server Express as a development data store on your local machine

Das Mobile Apps Node.js SDK bietet drei Optionen zum Bereitstellen von Daten ohne weitere Konfiguration:The Mobile Apps Node.js SDK provides three options for serving data out of the box:

  • Verwenden Sie den memory-Treiber zum Bereitstellen eines nicht beständigen Beispielspeichers.Use the memory driver to provide a non-persistent example store.
  • Verwenden Sie den mssql-Treiber zum Bereitstellen eines SQL Server Express-Datenspeichers für die Entwicklung.Use the mssql driver to provide a SQL Server Express data store for development.
  • Verwenden Sie den mssql-Treiber zum Bereitstellen eines Azure SQL-Datenbank-Datenspeichers für die Produktion.Use the mssql driver to provide an Azure SQL Database data store for production.

Das Mobile Apps Node.js SDK verwendet das mssql-Node.js-Paket, um eine Verbindung mit SQL Server Express und SQL-Datenbank einzurichten und zu nutzen.The Mobile Apps Node.js SDK uses the mssql Node.js package to establish and use a connection to both SQL Server Express and SQL Database. Für dieses Paket müssen Sie TCP-Verbindungen auf Ihrer SQL Server Express-Instanz aktivieren.This package requires that you enable TCP connections on your SQL Server Express instance.

Tipp

Beim memory-Treiber wird keine vollständige Gruppe von Elementen für Testzwecke bereitgestellt.The memory driver does not provide a complete set of facilities for testing. Wenn Sie Ihr Back-End lokal testen möchten, empfehlen wir die Verwendung eines SQL Server Express-Datenspeichers und des mssql-Treibers.If you want to test your back end locally, we recommend the use of a SQL Server Express data store and the mssql driver.

  1. Laden Sie Microsoft SQL Server 2014 Expressherunter, und installieren Sie die Anwendung.Download and install Microsoft SQL Server 2014 Express. Stellen Sie sicher, dass Sie SQL Server 2014 Express-Edition mit Tools installieren.Ensure that you install the SQL Server 2014 Express with Tools edition. Falls Sie nicht unbedingt 64-Bit-Unterstützung benötigen, können Sie die 32-Bit-Version verwenden, die bei der Ausführung weniger Arbeitsspeicher verbraucht.Unless you explicitly require 64-bit support, the 32-bit version consumes less memory when running.

  2. Führen Sie den SQL Server 2014-Konfigurations-Manager aus:Run SQL Server 2014 Configuration Manager:

    a.a. Erweitern Sie im Strukturmenü den Knoten SQL Server-Netzwerkkonfiguration.Expand the SQL Server Network Configuration node in the tree menu.

    b.b. Wählen Sie Protokolle für SQLEXPRESS aus.Select Protocols for SQLEXPRESS.

    c.c. Klicken Sie mit der rechten Maustaste auf TCP/IP, und wählen Sie Aktivieren.Right-click TCP/IP and select Enable. Klicken Sie im Popupdialogfenster auf OK.Select OK in the pop-up dialog box.

    d.d. Klicken Sie mit der rechten Maustaste auf TCP/IP, und wählen Sie Eigenschaften.Right-click TCP/IP and select Properties.

    e.e. Wählen Sie die Registerkarte IP-Adressen aus.Select the IP Addresses tab.

    f.f. Suchen Sie nach dem Knoten IPAll .Find the IPAll node. Geben Sie im Feld TCP-Port den Wert 1433 ein.In the TCP Port field, enter 1433.

    Konfigurieren von SQL Server Express für TCP/IP

    g.g. Klicken Sie auf OK.Select OK. Klicken Sie im Popupdialogfenster auf OK.Select OK in the pop-up dialog box.

    h.h. Wählen Sie im Strukturmenü SQL Server-Dienste aus.Select SQL Server Services in the tree menu.

    i.i. Klicken Sie mit der rechten Maustaste auf SQL Server (SQLEXPRESS) , und wählen Sie Neu starten aus.Right-click SQL Server (SQLEXPRESS) and select Restart.

    j.j. Schließen Sie den SQL Server 2014-Konfigurations-Manager.Close SQL Server 2014 Configuration Manager.

  3. Ausführen von SQL Server 2014 Management Studio und Herstellen einer Verbindung mit Ihrer lokalen SQL Server Express-Instanz:Run SQL Server 2014 Management Studio and connect to your local SQL Server Express instance:

    1. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf Ihre Instanz, und wählen Sie Eigenschaften aus.Right-click your instance in Object Explorer and select Properties.

    2. Wählen Sie die Seite Sicherheit aus.Select the Security page.

    3. Stellen Sie sicher, dass der SQL Server- und Windows-Authentifizierungsmodus ausgewählt ist.Ensure that SQL Server and Windows Authentication mode is selected.

    4. Klicken Sie auf OK.Select OK.

      SQL Server Express-Authentifizierung konfigurieren

    5. Erweitern Sie Sicherheit > Anmeldungen im Objekt-Explorer.Expand Security > Logins in Object Explorer.

    6. Klicken Sie mit der rechten Maustaste auf Anmeldungen, und wählen Sie Neue Anmeldung aus.Right-click Logins and select New Login.

    7. Geben Sie einen Anmeldenamen ein.Enter a login name. Wählen Sie SQL Server-Authentifizierung.Select SQL Server authentication. Geben Sie ein Kennwort ein, und geben Sie das gleiche Kennwort dann noch einmal unter Kennwort bestätigen ein.Enter a password, and then enter the same password in Confirm password. Das Kennwort muss die unter Windows erforderliche Kennwortkomplexität aufweisen.The password must meet Windows complexity requirements.

    8. Klicken Sie auf OK.Select OK.

      Neuen Benutzer zu SQL Server Express hinzufügen

    9. Klicken Sie mit der rechten Maustaste auf die neue Anmeldung, und wählen Sie Eigenschaften aus.Right-click your new login and select Properties.

    10. Wählen Sie die Seite Serverrollen aus.Select the Server Roles page.

    11. Aktivieren Sie das Kontrollkästchen für die Serverrolle dbcreator.Select the check box for the dbcreator server role.

    12. Klicken Sie auf OK.Select OK.

    13. Schließen Sie SQL Server 2015 Management Studio.Close SQL Server 2015 Management Studio.

Notieren Sie sich unbedingt den gewählten Benutzernamen und das gewählte Kennwort.Be sure to record the username and password that you selected. Möglicherweise müssen Sie je nach Datenbankanforderungen weitere Serverrollen oder Berechtigungen zuweisen.You might need to assign additional server roles or permissions, depending on your database requirements.

Die Node.js-Anwendung liest die Umgebungsvariable SQLCONNSTR_MS_TableConnectionString, um die Verbindungszeichenfolge für diese Datenbank abzurufen.The Node.js application reads the SQLCONNSTR_MS_TableConnectionString environment variable for the connection string for this database. Sie können diese Variable in Ihrer Umgebung festlegen.You can set this variable in your environment. Beispielsweise können Sie PowerShell verwenden, um diese Umgebungsvariable festzulegen:For example, you can use PowerShell to set this environment variable:

$env:SQLCONNSTR_MS_TableConnectionString = "Server=127.0.0.1; Database=mytestdatabase; User Id=azuremobile; Password=T3stPa55word;"

Greifen Sie über eine TCP/IP-Verbindung auf die Datenbank zu.Access the database through a TCP/IP connection. Geben Sie einen Benutzernamen und ein Kennwort für die Verbindung an.Provide a username and password for the connection.

Konfigurieren des Projekts für die lokale EntwicklungConfigure your project for local development

Mobile Apps liest eine JavaScript-Datei mit dem Namen azureMobile.js aus dem lokalen Dateisystem.Mobile Apps reads a JavaScript file called azureMobile.js from the local file system. Verwenden Sie diese Datei nicht, um das Mobile Apps SDK in einer Produktionsumgebung zu konfigurieren.Do not use this file to configure the Mobile Apps SDK in production. Verwenden Sie stattdessen App-Einstellungen im Azure-Portal.Instead, use App settings in the Azure portal.

Die Datei „azureMobile.js“ muss ein Konfigurationsobjekt exportieren.The azureMobile.js file should export a configuration object. Die am häufigsten verwendeten Einstellungen lauten:The most common settings are:

  • DatenbankeinstellungenDatabase settings
  • DiagnoseprotokollierungseinstellungenDiagnostic logging settings
  • Alternative CORS-EinstellungenAlternate CORS settings

Diese azureMobile.js-Beispieldatei implementiert die oben beschriebenen Datenbankeinstellungen:This example azureMobile.js file implements the preceding database settings:

module.exports = {
    cors: {
        origins: [ 'localhost' ]
    },
    data: {
        provider: 'mssql',
        server: '127.0.0.1',
        database: 'mytestdatabase',
        user: 'azuremobile',
        password: 'T3stPa55word'
    },
    logging: {
        level: 'verbose'
    }
};

Es ist ratsam, dass Sie azureMobile.js Ihrer .gitignore-Datei hinzufügen (oder eine andere Datei zum Ignorieren der Quellcodeverwaltung), um zu verhindern, dass Kennwörter in der Cloud gespeichert werden.We recommend that you add azureMobile.js to your .gitignore file (or other source code control ignore file) to prevent passwords from being stored in the cloud. Konfigurieren Sie die Produktionseinstellungen immer in den App-Einstellungen im Azure-Portal.Always configure production settings in App settings within the Azure portal.

Konfigurieren von App-Einstellungen für Ihre mobile AppConfigure app settings for your mobile app

Für die meisten Einstellungen in der Datei „azureMobile.js“ gibt es im Azure-Portal eine entsprechende App-Einstellung.Most settings in the azureMobile.js file have an equivalent app setting in the Azure portal. Verwenden Sie die folgende Liste, um Ihre App unter App-Einstellungen zu konfigurieren:Use the following list to configure your app in App settings:

App-EinstellungApp setting azureMobile.js-EinstellungazureMobile.js setting BESCHREIBUNGDescription Gültige WerteValid values
MS_MobileAppNameMS_MobileAppName namename Name der AppName of the app Zeichenfolgestring
MS_MobileLoggingLevelMS_MobileLoggingLevel logging.levellogging.level Mindestprotokolliergrad für die zu protokollierenden Meldungen.Minimum log level of messages to log error, warning, info, verbose, debug, sillyerror, warning, info, verbose, debug, silly
MS_DebugModeMS_DebugMode debugdebug Aktiviert oder deaktiviert den Debugmodus.Enables or disables debug mode true, falsetrue, false
MS_TableSchemaMS_TableSchema data.schemadata.schema Name des Standardschemas für SQL-TabellenDefault schema name for SQL tables string (default: dbo)string (default: dbo)
MS_DynamicSchemaMS_DynamicSchema data.dynamicSchemadata.dynamicSchema Aktiviert oder deaktiviert den Debugmodus.Enables or disables debug mode true, falsetrue, false
MS_DisableVersionHeaderMS_DisableVersionHeader version (set to undefined)version (set to undefined) Deaktiviert den Header „X-ZUMO-Server-Version“.Disables the X-ZUMO-Server-Version header true, falsetrue, false
MS_SkipVersionCheckMS_SkipVersionCheck skipversioncheckskipversioncheck Deaktiviert die Überprüfung der Client-API-Version.Disables the client API version check true, falsetrue, false

So legen Sie eine App-Einstellung fest:To set an app setting:

  1. Melden Sie sich beim Azure-Portal an.Sign in to the Azure portal.
  2. Wählen Sie Alle Ressourcen oder App Services aus, und klicken Sie dann auf den Namen Ihrer mobilen App.Select All resources or App Services, and then select the name of your mobile app.
  3. Der Bereich Einstellungen wird standardmäßig geöffnet.The Settings pane opens by default. Wenn dies nicht der Fall ist, klicken Sie auf Einstellungen.If it doesn't, select Settings.
  4. Wählen Sie im Menü Allgemein die Option Anwendungseinstellungen aus.On the GENERAL menu, select Application settings.
  5. Scrollen Sie zum Abschnitt App-Einstellungen.Scroll to the App settings section.
  6. Wenn Ihre App-Einstellung bereits vorhanden ist, wählen Sie den Wert der App-Einstellung aus, um ihn zu bearbeiten.If your app setting already exists, select the value of the app setting to edit the value. Wenn die App-Einstellung nicht vorhanden ist, geben Sie im Feld Schlüssel die App-Einstellung und im Feld Wert den Wert ein.If your app setting does not exist, enter the app setting in the Key box and the value in the Value box.
  7. Wählen Sie Speichern aus.Select Save.

Nach dem Ändern der meisten App-Einstellungen ist ein Neustart des Diensts erforderlich.Changing most app settings requires a service restart.

Verwenden von SQL-Datenbank als Datenspeicher für die ProduktionUse SQL Database as your production data store

Das Verwenden von Azure SQL-Datenbank als Datenspeicher ist über alle Azure App Service-Anwendungstypen hinweg identisch.Using Azure SQL Database as a data store is identical across all Azure App Service application types. Führen Sie diese Schritte zum Erstellen eines Mobile Apps-Back-Ends aus, falls Sie dies noch nicht getan haben:If you have not done so already, follow these steps to create a Mobile Apps back end:

  1. Melden Sie sich beim Azure-Portal an.Sign in to the Azure portal.

  2. Klicken Sie oben links im Fenster auf +NEU > Web + Mobil > Mobile App, und geben Sie dann einen Namen für Ihr Mobile Apps-Back-End an.In the upper left of the window, select the +NEW button > Web + Mobile > Mobile App, and then provide a name for your Mobile Apps back end.

  3. Geben Sie im Feld Ressourcengruppe den gleichen Namen wie für Ihre App ein.In the Resource Group box, enter the same name as your app.

  4. Der App Service-Plan „Standard“ wird ausgewählt.The default App Service plan is selected. Wenn Sie den App Service-Plan ändern möchten, gehen Sie folgendermaßen von:If you want to change your App Service plan:

    a.a. Wählen Sie App Service-Plan > +Neu erstellen aus.Select App Service Plan > +Create New.

    b.b. Geben Sie einen Namen für den neuen App Service-Tarif ein, und wählen Sie einen geeigneten Speicherort.Provide a name of the new App Service plan and select an appropriate location.

    c.c. Wählen Sie einen geeigneten Tarif für den Dienst aus.Select an appropriate pricing tier for the service. Wählen Sie Alle anzeigen aus, um mehr Tarifoptionen anzuzeigen, z. B. Free und Shared.Select View all to view more pricing options, such as Free and Shared.

    d.d. Klicken Sie auf die Schaltfläche Auswählen.Click the Select button.

    e.e. Kehren Sie zum Bereich App Service-Plan zurück, und klicken Sie auf OK.Back in the App Service plan pane, select OK.

  5. Klicken Sie auf Erstellen.Select Create.

Das Bereitstellen eines Mobile Apps-Back-Ends kann einige Minuten in Anspruch nehmen.Provisioning a Mobile Apps back end can take a couple of minutes. Nachdem das Mobile Apps-Back-End bereitgestellt wurde, wird im Portal der Bereich Einstellungen für das Mobile Apps-Back-End geöffnet.After the Mobile Apps back end is provisioned, the portal opens the Settings pane for the Mobile Apps back end.

Sie können entweder für eine vorhandene SQL-Datenbank eine Verbindung mit Ihrem Mobile Apps-Back-End herstellen oder eine neue SQL-Datenbank erstellen.You can choose to either connect an existing SQL database to your Mobile Apps back end or create a new SQL database. In diesem Abschnitt erstellen wir eine SQL-Datenbank.In this section, we create a SQL database.

Hinweis

Wenn Sie am Standort des Mobile Apps-Back-Ends bereits über eine Datenbank verfügen, können Sie auf stattdessen Vorhandene Datenbank verwenden klicken und dann diese Datenbank auswählen.If you already have a database in the same location as the Mobile Apps back end, you can instead select Use an existing database and then select that database. Die Verwendung einer Datenbank an einem anderen Standort wird aufgrund der höheren Latenz nicht empfohlen.We don't recommend the use of a database in a different location because of higher latencies.

  1. Wählen Sie im neuen Mobile Apps-Back-End Einstellungen > Mobile App > Daten > +Hinzufügen aus.In the new Mobile Apps back end, select Settings > Mobile App > Data > +Add.

  2. Klicken Sie im Bereich Datenverbindung hinzufügen auf SQL-Datenbank – erforderliche Einstellungen konfigurieren > Neue Datenbank erstellen.In the Add data connection pane, select SQL Database - Configure required settings > Create a new database. Geben Sie den Namen der neuen Datenbank in das Feld Name ein.Enter the name of the new database in the Name box.

  3. Wählen Sie Server aus.Select Server. Geben Sie im Bereich Neuer Server einen eindeutigen Namen in das Feld Servername ein, und geben Sie einen geeigneten Administratoranmeldenamen und ein Kennwort für den Server an.In the New server pane, enter a unique server name in the Server name box, and provide a suitable server admin login and password. Achten Sie darauf, dass Azure-Diensten Zugriff auf den Server erlauben aktiviert ist.Ensure that Allow azure services to access server is selected. Klicken Sie auf OK.Select OK.

    Erstellen einer Azure SQL-Datenbank

  4. Klicken Sie im Bereich Neue Datenbank auf OK.In the New database pane, select OK.

  5. Kehren Sie zum Bereich Datenverbindung hinzufügen zurück, wählen Sie Verbindungszeichenfolge aus, und geben Sie den Anmeldenamen und das Kennwort ein, den bzw. das Sie beim Erstellen der Datenbank angegeben haben.Back in the Add data connection pane, select Connection string, and enter the login and password that you provided when you created the database. Wenn Sie eine vorhandene Datenbank verwenden, geben Sie die Anmeldeinformationen für diese Datenbank an.If you use an existing database, provide the login credentials for that database. Klicken Sie auf OK.Select OK.

  6. Kehren Sie erneut zum Bereich Datenverbindung hinzufügen zurück, und klicken Sie auf OK, um die Datenbank zu erstellen.Back in the Add data connection pane again, select OK to create the database.

Das Erstellen der Datenbank kann einige Minuten dauern.Creation of the database can take a few minutes. Im Bereich Benachrichtigungen können Sie den Fortschritt der Bereitstellung überwachen.Use the Notifications area to monitor the progress of the deployment. Fahren Sie erst fort, wenn die Datenbank erfolgreich bereitgestellt wurde.Do not progress until the database is deployed successfully. Nach der Bereitstellung der Datenbank wird in den Einstellungen Ihres Mobile Apps-Back-Ends eine Verbindungszeichenfolge für die SQL-Datenbankinstanz erstellt.After the database is deployed, a connection string is created for the SQL Database instance in your Mobile Apps back-end app settings. Sie können diese App-Einstellung unter Einstellungen > Anwendungseinstellungen > Verbindungszeichenfolgen anzeigen.You can see this app setting in Settings > Application settings > Connection strings.

Erzwingen der Authentifizierung für den Zugriff auf TabellenRequire authentication for access to tables

Wenn Sie die App Service-Authentifizierung mit dem tables-Endpunkt verwenden möchten, müssen Sie die App Service-Authentifizierung zuerst im Azure-Portal konfigurieren.If you want to use App Service Authentication with the tables endpoint, you must configure App Service Authentication in the Azure portal first. Weitere Informationen finden Sie im Konfigurationshandbuch für den Identitätsanbieter, den Sie verwenden möchten:For more information, see the configuration guide for the identity provider that you intend to use:

Jede Tabelle verfügt über eine access-Eigenschaft, die zum Steuern des Zugriffs auf die Tabelle verwendet werden kann.Each table has an access property that you can use to control access to the table. Das folgende Beispiel zeigt eine statisch definierte Tabelle mit erforderlicher Authentifizierung.The following sample shows a statically defined table with authentication required.

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Define the columns within the table.
table.columns = {
    "text": "string",
    "complete": "boolean"
};

// Turn off the dynamic schema.
table.dynamicSchema = false;

// Require authentication to access the table.
table.access = 'authenticated';

module.exports = table;

Die access-Eigenschaft kann einen von drei Werten annehmen:The access property can take one of three values:

  • anonymous gibt an, dass die Clientanwendung Daten ohne Authentifizierung lesen darf.anonymous indicates that the client application is allowed to read data without authentication.
  • authenticated gibt an, dass die Clientanwendung zusammen mit der Anforderung ein gültiges Authentifizierungstoken senden muss.authenticated indicates that the client application must send a valid authentication token with the request.
  • disabled gibt an, dass die Tabelle derzeit deaktiviert ist.disabled indicates that this table is currently disabled.

Wenn die access-Eigenschaft nicht definiert ist, ist der Zugriff ohne Authentifizierung zulässig.If the access property is undefined, unauthenticated access is allowed.

Verwenden von Authentifizierungsansprüchen für TabellenUse authentication claims with your tables

Sie können verschiedene Ansprüche einrichten, die beim Einrichten der Authentifizierung angefordert werden.You can set up various claims that are requested when authentication is set up. Diese Ansprüche stehen normalerweise nicht über das context.user -Objekt zur Verfügung.These claims are not normally available through the context.user object. Sie können jedoch mithilfe der context.user.getIdentity()-Methode abgerufen werden.However, you can retrieve them by using the context.user.getIdentity() method. Die getIdentity()-Methode gibt eine Zusage (promise) zurück, die in ein Objekt aufgelöst wird.The getIdentity() method returns a promise that resolves to an object. Das Objekt wird durch die Authentifizierungsmethode mit einem Schlüssel versehen (facebook, google, twitter, microsoftaccount oder aad).The object is keyed by the authentication method (facebook, google, twitter, microsoftaccount, or aad).

Wenn Sie beispielsweise die Microsoft-Kontoauthentifizierung einrichten und den Anspruch „E-Mail-Adressen“ anfordern, können Sie die E-Mail-Adresse mit dem folgenden Tabellencontroller zum Datensatz hinzufügen:For example, if you set up Microsoft account authentication and request the email addresses claim, you can add the email address to the record with the following table controller:

var azureMobileApps = require('azure-mobile-apps');

// Create a new table definition.
var table = azureMobileApps.table();

table.columns = {
    "emailAddress": "string",
    "text": "string",
    "complete": "boolean"
};
table.dynamicSchema = false;
table.access = 'authenticated';

/**
* Limit the context query to those records with the authenticated user email address
* @param {Context} context the operation context
* @returns {Promise} context execution Promise
*/
function queryContextForEmail(context) {
    return context.user.getIdentity().then((data) => {
        context.query.where({ emailAddress: data.microsoftaccount.claims.emailaddress });
        return context.execute();
    });
}

/**
* Adds the email address from the claims to the context item - used for
* insert operations
* @param {Context} context the operation context
* @returns {Promise} context execution Promise
*/
function addEmailToContext(context) {
    return context.user.getIdentity().then((data) => {
        context.item.emailAddress = data.microsoftaccount.claims.emailaddress;
        return context.execute();
    });
}

// Configure specific code when the client does a request.
// READ: only return records that belong to the authenticated user.
table.read(queryContextForEmail);

// CREATE: add or overwrite the userId based on the authenticated user.
table.insert(addEmailToContext);

// UPDATE: only allow updating of records that belong to the authenticated user.
table.update(queryContextForEmail);

// DELETE: only allow deletion of records that belong to the authenticated user.
table.delete(queryContextForEmail);

module.exports = table;

Um zu sehen, welche Ansprüche verfügbar sind, verwenden Sie einen Webbrowser zum Anzeigen des /.auth/me -Endpunkts der Website.To see what claims are available, use a web browser to view the /.auth/me endpoint of your site.

Deaktivieren des Zugriffs auf bestimmte TabellenvorgängeDisable access to specific table operations

Die access-Eigenschaft kann nicht nur in der Tabelle angezeigt werden, sondern sie kann auch verwendet werden, um einzelne Vorgänge zu steuern.In addition to appearing on the table, the access property can be used to control individual operations. Es gibt vier Vorgänge:There are four operations:

  • read ist der auf die Tabelle angewendete RESTful GET-Vorgang.read is the RESTful GET operation on the table.
  • insert ist der auf die Tabelle angewendete RESTful POST-Vorgang.insert is the RESTful POST operation on the table.
  • update ist der auf die Tabelle angewendete RESTful PATCH-Vorgang.update is the RESTful PATCH operation on the table.
  • delete ist der auf die Tabelle angewendete RESTful DELETE-Vorgang.delete is the RESTful DELETE operation on the table.

Es kann beispielsweise sein, dass Sie eine schreibgeschützte, nicht authentifizierte Tabelle bereitstellen möchten:For example, you might want to provide a read-only unauthenticated table:

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Read-only table. Only allow READ operations.
table.read.access = 'anonymous';
table.insert.access = 'disabled';
table.update.access = 'disabled';
table.delete.access = 'disabled';

module.exports = table;

Anpassen der Abfrage für TabellenvorgängeAdjust the query that is used with table operations

Eine häufige Anforderung an Tabellenvorgänge ist das Bereitstellen einer eingeschränkten Anzeige von Daten.A common requirement for table operations is to provide a restricted view of the data. Beispielsweise können Sie eine Tabelle bereitstellen, die mit der authentifizierten Benutzer-ID gekennzeichnet ist, damit Sie nur Ihre eigenen Datensätze lesen oder aktualisieren können.For example, you can provide a table that is tagged with the authenticated user ID such that you can only read or update your own records. Mit der folgenden Tabellendefinition werden diese Funktionen bereitgestellt:The following table definition provides this functionality:

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Define a static schema for the table.
table.columns = {
    "userId": "string",
    "text": "string",
    "complete": "boolean"
};
table.dynamicSchema = false;

// Require authentication for this table.
table.access = 'authenticated';

// Ensure that only records for the authenticated user are retrieved.
table.read(function (context) {
    context.query.where({ userId: context.user.id });
    return context.execute();
});

// When adding records, add or overwrite the userId with the authenticated user.
table.insert(function (context) {
    context.item.userId = context.user.id;
    return context.execute();
});

module.exports = table;

Vorgänge, bei denen normalerweise eine Abfrage ausgeführt wird, verfügen über eine Abfrageeigenschaft, die Sie mit einer where-Klausel anpassen können.Operations that normally run a query have a query property that you can adjust by using a where clause. Die Abfrageeigenschaft ist ein QueryJS-Objekt zum Konvertieren einer OData-Abfrage in ein Element, das vom Daten-Back-End verarbeitet werden kann.The query property is a QueryJS object that is used to convert an OData query to something that the data back end can process. Für einfache Gleichheit (wie im vorherigen Fall) können Sie eine Zuordnung verwenden.For simple equality cases (like the preceding one), you can use a map. Sie können auch bestimmte SQL-Klauseln hinzufügen:You can also add specific SQL clauses:

context.query.where('myfield eq ?', 'value');

Konfigurieren des vorläufigen Löschens in einer TabelleConfigure a soft delete on a table

Beim vorläufigen Löschen werden Datensätze nicht tatsächlich gelöscht.A soft delete does not actually delete records. Stattdessen werden sie in der Datenbank als gelöscht markiert, indem die Spalte „deleted“ auf „true“ festgelegt wird.Instead it marks them as deleted within the database by setting the deleted column to true. Das Mobile Apps SDK entfernt vorläufig gelöschte Datensätze automatisch aus Ergebnissen, es sei denn, im Mobile Client SDK wird IncludeDeleted() verwendet.The Mobile Apps SDK automatically removes soft-deleted records from results unless the Mobile Client SDK uses IncludeDeleted(). Legen Sie in der Tabellendefinitionsdatei die softDelete-Eigenschaft fest, um eine Tabelle für das vorläufige Löschen zu konfigurieren:To configure a table for a soft delete, set the softDelete property in the table definition file:

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Define the columns within the table.
table.columns = {
    "text": "string",
    "complete": "boolean"
};

// Turn off the dynamic schema.
table.dynamicSchema = false;

// Turn on soft delete.
table.softDelete = true;

// Require authentication to access the table.
table.access = 'authenticated';

module.exports = table;

Sie sollten ein Verfahren zum Löschen von Datensätzen einrichten: eine Clientanwendung, einen WebJob, eine Azure-Funktion oder eine benutzerdefinierte API.You should establish a mechanism for deleting records: a client application, a WebJob, an Azure function, or a custom API.

Durchführen des Seedings für Ihre Datenbank mit DatenSeed your database with data

Wenn Sie eine neue Anwendung erstellen, kann es sein, dass Sie für eine Tabelle ein Seeding mit Daten durchführen möchten.When you're creating a new application, you might want to seed a table with data. Dies kann innerhalb der JavaScript-Datei mit der Tabellendefinition erfolgen:You can do this within the table definition JavaScript file as follows:

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Define the columns within the table.
table.columns = {
    "text": "string",
    "complete": "boolean"
};
table.seed = [
    { text: 'Example 1', complete: false },
    { text: 'Example 2', complete: true }
];

// Turn off the dynamic schema.
table.dynamicSchema = false;

// Require authentication to access the table.
table.access = 'authenticated';

module.exports = table;

Ein Seeding der Daten findet nur statt, wenn Sie zum Erstellen der Tabelle das Mobile Apps SDK verwendet haben.Seeding of data happens only when you've used the Mobile Apps SDK to create the table. Wenn die Tabelle in der Datenbank bereits vorhanden ist, werden keine Daten in die Tabelle eingefügt.If the table already exists in the database, no data is injected into the table. Wenn das dynamische Schema aktiviert ist, wird das Schema aus den Seedingdaten abgeleitet.If the dynamic schema is turned on, the schema is inferred from the seeded data.

Wir empfehlen, die tables.initialize() -Methode explizit aufzurufen, um die Tabelle zu erstellen, wenn die Ausführung des Diensts beginnt.We recommend that you explicitly call the tables.initialize() method to create the table when the service starts running.

Aktivieren der Swagger-UnterstützungEnable Swagger support

Swagger-Unterstützung ist in Mobile Apps bereits integriert.Mobile Apps comes with built-in Swagger support. Um die Swagger-Unterstützung zu aktivieren, installieren Sie zuerst die Swagger-Benutzeroberfläche als Abhängigkeit:To enable Swagger support, first install swagger-ui as a dependency:

npm install --save swagger-ui

Danach können Sie die Swagger-Unterstützung im Mobile Apps-Konstruktor aktivieren:You can then enable Swagger support in the Mobile Apps constructor:

var mobile = azureMobileApps({ swagger: true });

Die Swagger-Unterstützung soll wahrscheinlich nur in Entwicklungseditionen aktiviert werden.You probably only want to enable Swagger support in development editions. Hierzu können Sie die App-Einstellung NODE_ENV verwenden:You can do this by using the NODE_ENV app setting:

var mobile = azureMobileApps({ swagger: process.env.NODE_ENV !== 'production' });

Der swagger-Endpunkt befindet sich unter http://Ihre_Website.azurewebsites.net/swagger.The swagger endpoint is located at http://yoursite.azurewebsites.net/swagger. Sie können über den /swagger/ui -Endpunkt auf die Swagger-Benutzeroberfläche zugreifen.You can access the Swagger UI via the /swagger/ui endpoint. Wenn Sie die Authentifizierung in Ihrer gesamten Anwendung als erforderlich festlegen, gibt Swagger einen Fehler aus.If you choose to require authentication across your entire application, Swagger produces an error. Um optimale Ergebnisse zu erzielen, lassen Sie in den Einstellungen für die Azure App Service-Authentifizierung/-Autorisierung nicht authentifizierte Anforderungen zu, und steuern Sie dann die Authentifizierung mithilfe der table.access-Eigenschaft.For best results, choose to allow unauthenticated requests in the Azure App Service Authentication/Authorization settings, and then control authentication by using the table.access property.

Sie können die Swagger-Option auch der Datei „azureMobile.js“ hinzufügen, wenn die Swagger-Unterstützung nur für die lokale Entwicklung verfügbar sein soll.You can also add the Swagger option to your azureMobile.js file if you only want Swagger support for developing locally.

PushbenachrichtigungenPush notifications

Mobile Apps ist in Azure Notification Hubs integriert, damit Sie gezielte Pushbenachrichtigungen an Millionen von Geräten auf allen gängigen Plattformen senden können.Mobile Apps integrates with Azure Notification Hubs so you can send targeted push notifications to millions of devices across all major platforms. Mit Notification Hubs können Sie Pushbenachrichtigungen an iOS-, Android- und Windows-Geräte senden.By using Notification Hubs, you can send push notifications to iOS, Android, and Windows devices. Weitere Informationen zu den verfügbaren Möglichkeiten mit Notification Hubs finden Sie unter Übersicht über Notification Hubs.To learn more about all that you can do with Notification Hubs, see the Notification Hubs overview.

Senden von PushbenachrichtigungenSend push notifications

Der folgende Code zeigt, wie Sie das push-Objekt zum Senden einer Broadcast-Pushbenachrichtigung an registrierte iOS-Geräte verwenden:The following code shows how to use the push object to send a broadcast push notification to registered iOS devices:

// Create an APNS payload.
var payload = '{"aps": {"alert": "This is an APNS payload."}}';

// Only do the push if configured.
if (context.push) {
    // Send a push notification by using APNS.
    context.push.apns.send(null, payload, function (error) {
        if (error) {
            // Do something or log the error.
        }
    });
}

Indem Sie auf dem Client eine Pushregistrierungsvorlage erstellen, können Sie stattdessen eine Pushnachrichtenvorlage an Geräte auf allen unterstützten Plattformen senden.By creating a template push registration from the client, you can instead send a template push message to devices on all supported platforms. Der folgende Code zeigt, wie eine Benachrichtigungsvorlage gesendet wird:The following code shows how to send a template notification:

// Define the template payload.
var payload = '{"messageParam": "This is a template payload."}';

// Only do the push if configured.
if (context.push) {
    // Send a template notification.
    context.push.send(null, payload, function (error) {
        if (error) {
            // Do something or log the error.
        }
    });
}

Senden von Pushbenachrichtigungen an einen authentifizierten Benutzer mithilfe von TagsSend push notifications to an authenticated user by using tags

Wenn ein authentifizierter Benutzer für Pushbenachrichtigungen registriert wird, wird der Registrierung automatisch ein Tag mit der Benutzer-ID hinzugefügt.When an authenticated user registers for push notifications, a user ID tag is automatically added to the registration. Mithilfe dieses Tags können Sie Pushbenachrichtigungen an alle Geräte senden, die von einem bestimmten Benutzer registriert wurden.By using this tag, you can send push notifications to all devices registered by a specific user. Der folgende Code ruft die SID des Benutzers ab, der die Anforderung stellt, und sendet eine Pushbenachrichtigungsvorlage an jede Geräteregistrierung für diesen Benutzer:The following code gets the SID of user who's making the request and sends a template push notification to every device registration for that user:

// Only do the push if configured.
if (context.push) {
    // Send a notification to the current user.
    context.push.send(context.user.id, payload, function (error) {
        if (error) {
            // Do something or log the error.
        }
    });
}

Bevor Sie sich für Pushbenachrichtigungen von einem authentifizierten Client registrieren, stellen Sie sicher, dass die Authentifizierung abgeschlossen ist.When you're registering for push notifications from an authenticated client, make sure that authentication is complete before you attempt registration.

Benutzerdefinierte APIsCustom APIs

Definieren einer benutzerdefinierten APIDefine a custom API

Zusätzlich zur Datenzugriff-API über den /tables-Endpunkt unterstützt Mobile Apps auch benutzerdefinierte APIs.In addition to the Data Access API via the /tables endpoint, Mobile Apps can provide custom API coverage. Benutzerdefinierte APIs werden auf ähnliche Weise wie Tabellendefinitionen definiert und können auf die gleichen Funktionen zugreifen, einschließlich der Authentifizierung.Custom APIs are defined in a similar way to the table definitions and can access all the same facilities, including authentication.

Wenn Sie die App Service-Authentifizierung mit einer benutzerdefinierten API verwenden möchten, müssen Sie die App Service-Authentifizierung zuerst im Azure-Portal konfigurieren.If you want to use App Service Authentication with a custom API, you must configure App Service Authentication in the Azure portal first. Weitere Informationen finden Sie im Konfigurationshandbuch für den Identitätsanbieter, den Sie verwenden möchten:For more information, see the configuration guide for the identity provider that you intend to use:

Benutzerdefinierte APIs werden auf ähnliche Weise wie die Tabellen-API definiert:Custom APIs are defined in much the same way as the Tables API:

  1. Erstellen Sie ein Verzeichnis namens api.Create an api directory.
  2. Erstellen Sie im api-Verzeichnis eine JavaScript-Datei mit einer API-Definition.Create an API definition JavaScript file in the api directory.
  3. Verwenden Sie die import-Methode, um das api-Verzeichnis zu importieren.Use the import method to import the api directory.

Hier finden Sie die API-Prototypdefinition, die auf dem weiter oben in diesem Artikel verwendeten grundlegenden App-Beispiel basiert:Here is the prototype API definition based on the basic-app sample that we used earlier:

var express = require('express'),
    azureMobileApps = require('azure-mobile-apps');

var app = express(),
    mobile = azureMobileApps();

// Import the custom API.
mobile.api.import('./api');

// Add the Mobile API so it is accessible as a Web API.
app.use(mobile);

// Start listening on HTTP
app.listen(process.env.PORT || 3000);

Wir verwenden eine Beispiel-API, die mithilfe der Date.now()-Methode das Serverdatum zurückgibt.Let's take an example API that returns the server date by using the Date.now() method. Dies ist die Datei „api/date.js“:Here is the api/date.js file:

var api = {
    get: function (req, res, next) {
        var date = { currentTime: Date.now() };
        res.status(200).type('application/json').send(date);
    });
};

module.exports = api;

Jeder Parameter entspricht einem der standardmäßigen RESTful-Verben: GET, POST, PATCH oder DELETE.Each parameter is one of the standard RESTful verbs: GET, POST, PATCH, or DELETE. Bei der Methode handelt es sich um eine ExpressJS-Middleware-Standardfunktion, mit der die erforderliche Ausgabe gesendet wird.The method is a standard ExpressJS middleware function that sends the required output.

Erzwingen der Authentifizierung für den Zugriff auf eine benutzerdefinierte APIRequire authentication for access to a custom API

Das Mobile Apps SDK implementiert die Authentifizierung sowohl für den tables-Endpunkt als auch für benutzerdefinierte APIs auf die gleiche Weise.The Mobile Apps SDK implements authentication in the same way for both the tables endpoint and custom APIs. Fügen Sie eine access-Eigenschaft hinzu, um die Authentifizierung für die im vorherigen Abschnitt entwickelte API hinzuzufügen:To add authentication to the API developed in the previous section, add an access property:

var api = {
    get: function (req, res, next) {
        var date = { currentTime: Date.now() };
        res.status(200).type('application/json').send(date);
    });
};
// All methods must be authenticated.
api.access = 'authenticated';

module.exports = api;

Sie können die Authentifizierung auch für bestimmte Vorgänge angeben:You can also specify authentication on specific operations:

var api = {
    get: function (req, res, next) {
        var date = { currentTime: Date.now() };
        res.status(200).type('application/json').send(date);
    }
};
// The GET methods must be authenticated.
api.get.access = 'authenticated';

module.exports = api;

Dasselbe Token, das für den tables-Endpunkt verwendet wird, muss auch für benutzerdefinierte APIs verwendet werden, die eine Authentifizierung erfordern.The same token that is used for the tables endpoint must be used for custom APIs that require authentication.

Ausführen großer DateiuploadsHandle large file uploads

Das Mobile Apps SDK verwendet die body-parser-Middleware, um Textinhalt in Ihrer Übermittlung zu akzeptieren und zu decodieren.The Mobile Apps SDK uses the body-parser middleware to accept and decode body content in your submission. Sie können „body-parser“ im Voraus so konfigurieren, dass größere Dateiuploads akzeptiert werden:You can preconfigure body-parser to accept larger file uploads:

var express = require('express'),
    bodyParser = require('body-parser'),
    azureMobileApps = require('azure-mobile-apps');

var app = express(),
    mobile = azureMobileApps();

// Set up large body content handling.
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));

// Import the custom API.
mobile.api.import('./api');

// Add the Mobile API so it is accessible as a Web API.
app.use(mobile);

// Start listening on HTTP.
app.listen(process.env.PORT || 3000);

Diese Datei wird vor der Übertragung Base64-codiert.The file is base-64 encoded before transmission. Durch diese Codierung erhöht sich die Größe des tatsächlichen Uploads (und damit auch die Größe, die Sie einberechnen müssen).This encoding increases the size of the actual upload (and the size that you must account for).

Ausführen von benutzerdefinierten SQL-AnweisungenExecute custom SQL statements

Das Mobile Apps SDK ermöglicht über das request-Objekt Zugriff auf den gesamten Kontext.The Mobile Apps SDK allows access to the entire context through the request object. Sie können ganz einfach parameterbasierte SQL-Anweisungen für den definierten Datenanbieter ausführen:You can easily execute parameterized SQL statements to the defined data provider:

var api = {
    get: function (request, response, next) {
        // Check for parameters. If not there, pass on to a later API call.
        if (typeof request.params.completed === 'undefined')
            return next();

        // Define the query. Anything that the mssql
        // driver can handle is allowed.
        var query = {
            sql: 'UPDATE TodoItem SET complete=@completed',
            parameters: [{
                completed: request.params.completed
            }]
        };

        // Execute the query. The context for Mobile Apps is available through
        // request.azureMobile. The data object contains the configured data provider.
        request.azureMobile.data.execute(query)
        .then(function (results) {
            response.json(results);
        });
    }
};

api.get.access = 'authenticated';
module.exports = api;

DebuggenDebugging

Debuggen, Diagnose und Problembehandlung bei Mobile AppsDebug, diagnose, and troubleshoot Mobile Apps

Azure App Service stellt mehrere Debugging- und Problembehandlungsverfahren für Node.js-Anwendungen bereit.Azure App Service provides several debugging and troubleshooting techniques for Node.js applications. Folgende Artikel helfen Ihnen beim Einstieg in die Problembehandlung Ihres Node.js Mobile Apps-Back-Ends:To get started in troubleshooting your Node.js Mobile Apps back end, see the following articles:

Node.js-Anwendungen haben Zugriff auf viele Tools für die Diagnoseprotokollierung.Node.js applications have access to a wide range of diagnostic log tools. Intern nutzt das Mobile Apps Node.js SDK Winston für die Diagnoseprotokollierung.Internally, the Mobile Apps Node.js SDK uses Winston for diagnostic logging. Die Protokollierung wird automatisch aktiviert, wenn Sie den Debugmodus aktivieren oder die App-Einstellung MS_DebugMode im Azure-Portal auf „true“ festlegen.Logging is automatically enabled when you enable debug mode or set the MS_DebugMode app setting to true in the Azure portal. Generierte Protokolle werden im Azure-Portal in den Diagnoseprotokollen angezeigt.Generated logs appear in the diagnostic logs in the Azure portal.