Abonnieren von Listenbenachrichtigungen
In SharePoint-Framework v1.7.0 eingeführt, können Sie Änderungen an Dateien abonnieren, die in einer SharePoint-Dokumentbibliothek gespeichert sind. Auf diese Weise können Sie auf Änderungen reagieren, wenn sie vorgenommen werden, ohne den Inhalt der Bibliothek regelmäßig abfragen zu müssen.
Voraussetzungen
Um die SharePoint-Framework-Abonnementfunktion zu verwenden, müssen Sie zuerst das npm-Paket @microsoft/sp-list-subscription installieren. Sie können dies mit den folgenden Codeausschnitt ausführen:
npm install @microsoft/sp-list-subscription --save --save-exact
Erhalten von Benachrichtigungen über Änderungen an Dokumenten in einer SharePoint-Dokumentbibliothek
Um Änderungen an Dateien zu abonnieren, die in einer SharePoint-Dokumentbibliothek gespeichert sind, erstellen Sie eine Instanz der ListSubscriptionFactory
-Klasse. Rufen Sie als Nächstesdie createSubscription()
-Methode auf, und übergeben Sie die ID der Dokumentbibliothek, die Sie abonnieren möchten. Wenn sich die Dokumentbibliothek auf der aktuellen Website befindet, ist es ausreichend, nur die Bibliotheks-ID anzugeben. Wenn es sich in einer anderen Website oder Websitesammlung befindet, müssen Sie auch deren IDs angeben.
Nachfolgend ist ein Beispiel für ein Listenabonnement einer Dokumentbibliothek aufgeführt, die sich auf der aktuellen Website befindet:
import { ListSubscriptionFactory, IListSubscription } from '@microsoft/sp-list-subscription';
import { Guid } from '@microsoft/sp-core-library';
export default class LatestDocumentsWebPart extends BaseClientSideWebPart<ILatestDocumentsWebPartProps> {
private _listSubscriptionFactory: ListSubscriptionFactory;
private _listSubscription: IListSubscription;
private async createListSubscription(): Promise<void> {
this._listSubscriptionFactory = new ListSubscriptionFactory(this);
this._listSubscription = await this._listSubscriptionFactory.createSubscription({
listId: Guid.parse(this.properties.listId),
callbacks: {
notification: this._loadDocuments.bind(this)
}
});
}
private _loadDocuments(): void {
// load documents here
}
// omitted for brevity
}
Beim Erstellen eines Listenabonnements mit der Eigenschaft callbacks.notification
müssen Sie die Methode angeben, die aufgerufen werden muss, wenn eine Änderung festgestellt wurde. Die Methode verfügt nicht über Argumente, und aus Sicherheitsgründen erhalten Sie keine Benachrichtigung darüber, was genau geändert wurde. Um den neuesten Inhalt der Dokumentbibliothek unter Einhaltung der konfigurierten Berechtigungen zu erhalten, können Sie entweder die REST-APIs von SharePoint oder Microsoft Graph verwenden.
Zusätzliche Konfiguration
Je nach der von Ihnen verwendeten Lösung müssen Sie möglicherweise zusätzliche Konfigurationsschritte vornehmen, wenn Sie zum Listenbenachrichtigungen abonnieren.
Verbinden mit einer Websitesammlung bei einem Mandanten mit mehreren geografische Standorte
Wenn Sie SharePoint für einen Mandanten mit mehreren geografischen Standorten verwenden, müssen Sie die Domäne angeben, in der sich die bestimmte Websitesammlung befindet. Sie können dies zum Beispiel mit der Eigenschaft domain
vornehmen:
this._listSubscriptionFactory.createSubscription({
domain: this.properties.siteDomain,
siteId: Guid.parse(this.properties.siteId),
webId: Guid.parse(this.properties.webId),
listId: Guid.parse(this.properties.listId),
callbacks: {
notification: this._loadDocuments.bind(this)
}
});
Benachrichtigung erhalten, wenn das Abonnement eingerichtet oder gekündigt wurde
In einigen Fällen möchten Sie möglicherweise benachrichtigt werden, wenn die von Ihnen erstellte Komponente Listenbenachrichtigungen erfolgreich abonniert hat oder die Verbindung unterbrochen wurde. Auf diese Weise können Sie dem Benutzer die Verbindung über die Benutzeroberfläche mitteilen.
Die Listenabonnement-API macht zwei zusätzliche Rückrufe verfügbar, die Sie implementieren können, um auf den Abonnementstatus zu reagieren. Der folgende Code zeigt den Fall, bei dem die Komponente benachrichtigt wird, wenn das Abonnement eingerichtet wurde und wenn es aufgehoben wurde.
private createListSubscription(): void {
this._listSubscriptionFactory.createSubscription({
domain: this.properties.siteDomain,
siteId: Guid.parse(this.properties.siteId),
webId: Guid.parse(this.properties.webId),
listId: Guid.parse(this.properties.listId),
callbacks: {
notification: this._loadDocuments.bind(this),
connect: this._subscriptionConnected.bind(this),
disconnect: this._subscriptionDisconnected.bind(this)
}
});
}
private _subscriptionConnected(): void {
// code to execute when the subscription to the list has been established
}
private _subscriptionDisconnected(reason: string): void {
// code to execute when the connection to the list has been disconnected
}
Die Methode für den callbacks.disconnect
-Rückruf übergibt als Grund dafür, warum die Verbindung getrennt wurde, ein Argument. Die möglichen Werte sind io server disconnect
, wenn die Verbindung durch den Client unterbrochen wurde, oder io client disconnect
, wenn der Server die Verbindung getrennt hat.
Überlegungen
- Alle SharePoint-Framework-Komponenten können die Listenabonnementfunktionen verwenden.
- Sie können Ereignisse aus Bibliotheken und Listen abonnieren.
- Es gibt eine Verzögerung von einigen Sekunden zwischen der Änderung und der Benachrichtigung, die von der Komponente empfangen wird.
- -Komponenten können Änderungen in mehreren Dokumentbibliotheken abonnieren
- Die Änderungsbenachrichtigung übergibt keine Informationen darüber, was im Dokument geändert oder was ihm hinzugefügt wurde. Um die Änderungen zu sehen, müssen Sie die REST-API für SharePoint oder Microsoft Graph verwenden.