Skip to content
import FeatureService from "@arcgis/core/rest/featureService/FeatureService.js";
Inheritance:
FeatureServiceAccessor
Since
ArcGIS Maps SDK for JavaScript 4.28

This class contains metadata about the feature service. The class can be constructed via a url to a feature service or from the class utils using the createFeatureServices() method.

Constructors

Constructor

Constructor
Parameters
ParameterTypeDescriptionRequired
properties
See the properties table for a list of all the properties that may be passed into the constructor.
Examples
// Create a FeatureService from a url
const featureService = new FeatureService({
url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Wildfire/FeatureServer"
});
// Create a FeatureService using [createFeatureServices()](https://developers.arcgis.com/javascript/latest/references/core/rest/featureService/utils/#createFeatureServices)
const layer1 = new FeatureLayer({url: `https://sampleserver6.arcgisonline.com/arcgis/rest/services/TestService/FeatureServer/12`});
const layer2 = new FeatureLayer({url: `https://sampleserver6.arcgisonline.com/arcgis/rest/services/TestService/FeatureServer/13`});
const layers = [layer1, layer2];
const mapOfServices = createFeatureServices(layers);
//loading featureService from map object.
const featureService = await mapOfServices.get(`https://sampleserver6.arcgisonline.com/arcgis/rest/services/TestService/FeatureServer`).featureService.load();

Properties

Any properties can be set, retrieved or listened to. See the Watch for changes topic.
PropertyTypeClass
capabilities
readonly
declaredClass
readonly inherited
loaded
readonly
loadError
readonly inherited
loadStatus
readonly inherited
"not-loaded" | "loading" | "failed" | "loaded"
loadWarnings
readonly inherited
any[]
uid
readonly inherited
url
string[]

capabilities

readonly Property
Type
ServiceCapabilities | null | undefined

Describes the layer's supported capabilities.

declaredClass

readonlyinherited Property
Type
string
Inherited from: Accessor

The name of the class. The declared class name is formatted as esri.folder.className.

effectiveCapabilities

readonly Property
Type
ServiceCapabilities | null
Since
ArcGIS Maps SDK for JavaScript 4.30

Describes effective capabilities of the service taking in to consideration privileges of the currently signed-in user.

layerInfos

Property
Type
LayerInfo[]

Contains info of all layers in the Feature Service.

loaded

readonly Property
Type
boolean

Indicates whether the instance has loaded. When true, the properties of the object can be accessed. A WebMap is considered loaded when its WebDocument2D.layers and WebDocument2D.basemap are created, but not yet loaded.

Default value
false

loadError

readonlyinherited Property
Type
EsriError | null | undefined
Inherited from: LoadableMixin

The Error object returned if an error occurred while loading.

loadStatus

readonlyinherited Property
Type
"not-loaded" | "loading" | "failed" | "loaded"
Inherited from: LoadableMixin

Represents the status of a load() operation.

ValueDescription
not-loadedThe object's resources have not loaded.
loadingThe object's resources are currently loading.
loadedThe object's resources have loaded without errors.
failedThe object's resources failed to load. See loadError for more details.
Default value
"not-loaded"

loadWarnings

readonlyinherited Property
Type
any[]
Inherited from: LoadableMixin

A list of warnings which occurred while loading.

tableInfos

Property
Type
TableInfo[]

Contains info of all tables in the Feature Service.

uid

readonlyinherited Property
Type
string
Inherited from: IdentifiableMixin
Since
ArcGIS Maps SDK for JavaScript 4.33

An automatically generated unique identifier assigned to the instance. The unique id is generated each time the application is loaded.

url

Property
Type
string

The absolute URL of the REST endpoint for the feature service. The URL may either point to a resource on ArcGIS Enterprise or ArcGIS Online.

userTypeExtensions

Property
Type
string[]

Describes the service's userTypeExtensions.

utilityNetworkUrl

readonly Property
Type
string | null

The url that points to the utility network layer, if it exists.

versionManagementServiceUrl

readonly Property
Type
string | null

The url to the version management service, if the data is versioned.

Methods

MethodSignatureClass
fromJSON
inherited static
fromJSON(json: any): any
applyEdits(edits: ServiceEdits[], options?: ServiceEditOptions): Promise<ServiceEditsResult[]>
cancelLoad
inherited
cancelLoad(): this
fetchAllLayersAndTables(options?: AbortOptions | null | undefined): Promise<ServiceContents>
isFulfilled
inherited
isFulfilled(): boolean
isRejected
inherited
isRejected(): boolean
isResolved
inherited
isResolved(): boolean
load(options?: AbortOptions | null | undefined): Promise<this>
toJSON
inherited
toJSON(): any
when
inherited
when<TResult1 = this, TResult2 = never>(onFulfilled?: OnFulfilledCallback<this, TResult1> | null | undefined, onRejected?: OnRejectedCallback<TResult2> | null | undefined): Promise<TResult1 | TResult2>

fromJSON

inheritedstatic Method
Signature
fromJSON (json: any): any
Inherited from: JSONSupportMixin

Creates a new instance of this class and initializes it with values from a JSON object generated from an ArcGIS product. The object passed into the input json parameter often comes from a response to a query operation in the REST API or a toJSON() method from another ArcGIS product. See the Using fromJSON() topic in the Guide for details and examples of when and how to use this function.

Parameters
ParameterTypeDescriptionRequired
json
any

A JSON representation of the instance in the ArcGIS format. See the ArcGIS REST API documentation for examples of the structure of various input JSON objects.

Returns
any

Returns a new instance of this class.

applyEdits

Method
Signature
applyEdits (edits: ServiceEdits[], options?: ServiceEditOptions): Promise<ServiceEditsResult[]>

Applies edits to features in the feature service layers. New features can be created and existing features can be updated or deleted. Feature geometries and/or attributes may be modified. Only applicable to layers in a feature service.

When calling the applyEdits method on a service that does not have vertical coordinate system information, the z-values of the geometries in the edits object will automatically be converted to match the spatial reference of the layer. Example: The service has a horizontal spatial reference with feet units, and applyEdits() is called with z-values based on meter units, then the method will automatically convert the z values from meter to feet units. applyEdits() will pass in a sessionId during an active edit session.

The deleteAssociations, combineGroupedObjects, and divideGroupedObjects edits are in beta and are reserved for future use in a telecom domain network.

Parameters
ParameterTypeDescriptionRequired
edits

Object containing features and attachments to be added, updated or deleted.

options

Additional edit options to specify when editing features or attachments.

Returns
Promise<ServiceEditsResult[]>

Results returned from the applyEdits() method. It contains features that were added, deleted or updated in different feature layers. It also contains the edit moment.

Example
// Adding multiple features with a single edit object
import Graphic from "esri/Graphic";
import Point from "esri/geometry/Point";
import FeatureService from "esri/rest/featureService/FeatureService";
const featureService = new FeatureService({
url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Wildfire/FeatureServer",
});
await featureService.load();
featureService.applyEdits(
[
{
id: 0, // The layer ID, or layer index, of a Feature Service layer
identifierFields: { objectIdField: "OBJECTID" },
addFeatures: [
new Graphic({
geometry: new Point({
x: -1329300,
y: 4038900,
spatialReference: {
wkid: 102100,
},
}),
attributes: {
description: "Feature description",
},
}),
new Graphic({
geometry: new Point({
x: -13300000,
y: 4039000,
spatialReference: {
wkid: 102100,
},
}),
attributes: {
description: "Feature description",
},
}),
],
},
],
{
gdbVersion: null,
globalIdUsed: false,
honorSequenceOfEdits: false,
usePreviousEditMoment: false,
},
);
// Adding multiple features with multiple edit objects
await featureService.applyEdits(
[
{
id: 0, // The layer ID, or layer index, of a Feature Service layer
identifierFields: { objectIdField: "OBJECTID" },
addFeatures: [
new Graphic({
geometry: new Point({
x: -13294000,
y: 4038800,
spatialReference: {
wkid: 102100,
},
}),
attributes: {
description: "Feature description",
},
}),
],
},
{
id: 0, // The layer ID, or layer index, of a Feature Service layer
identifierFields: { objectIdField: "OBJECTID" },
addFeatures: [
new Graphic({
geometry: new Point({
x: -13292000,
y: 4038800,
spatialReference: {
wkid: 102100,
},
}),
attributes: {
description: "Feature description",
},
}),
],
},
],
{
gdbVersion: null,
globalIdUsed: false,
honorSequenceOfEdits: true,
usePreviousEditMoment: false,
},
);

cancelLoad

inherited Method
Signature
cancelLoad (): this
Inherited from: LoadableMixin

Cancels a load() operation if it is already in progress.

Returns
this

fetchAllLayersAndTables

Method
Signature
fetchAllLayersAndTables (options?: AbortOptions | null | undefined): Promise<ServiceContents>

Triggers the loading of the feature service instance and fetches all layers and tables.

Fully loads the Feature Service definition.

Parameters
ParameterTypeDescriptionRequired
options

Additional options.

Returns
Promise<ServiceContents>

Resolves when the Feature Service is loaded.

isFulfilled

inherited Method
Signature
isFulfilled (): boolean
Inherited from: EsriPromiseMixin

isFulfilled() may be used to verify if creating an instance of the class is fulfilled (either resolved or rejected). If it is fulfilled, true will be returned.

Returns
boolean

Indicates whether creating an instance of the class has been fulfilled (either resolved or rejected).

isRejected

inherited Method
Signature
isRejected (): boolean
Inherited from: EsriPromiseMixin

isRejected() may be used to verify if creating an instance of the class is rejected. If it is rejected, true will be returned.

Returns
boolean

Indicates whether creating an instance of the class has been rejected.

isResolved

inherited Method
Signature
isResolved (): boolean
Inherited from: EsriPromiseMixin

isResolved() may be used to verify if creating an instance of the class is resolved. If it is resolved, true will be returned.

Returns
boolean

Indicates whether creating an instance of the class has been resolved.

load

Method
Signature
load (options?: AbortOptions | null | undefined): Promise<this>

Triggers the loading of the feature service instance.

Fully loads the Feature Service definition.

Parameters
ParameterTypeDescriptionRequired
options

Additional options.

Returns
Promise<this>

Resolves when the Feature Service is loaded.

toJSON

inherited Method
Signature
toJSON (): any
Inherited from: JSONSupportMixin

Converts an instance of this class to its ArcGIS portal JSON representation. See the Using fromJSON() guide topic for more information.

Returns
any

The ArcGIS portal JSON representation of an instance of this class.

when

inherited Method
Signature
when <TResult1 = this, TResult2 = never>(onFulfilled?: OnFulfilledCallback<this, TResult1> | null | undefined, onRejected?: OnRejectedCallback<TResult2> | null | undefined): Promise<TResult1 | TResult2>
Type parameters
<TResult1 = this, TResult2 = never>
Inherited from: EsriPromiseMixin

when() may be leveraged once an instance of the class is created. This method takes two input parameters: an onFulfilled function and an onRejected function. The onFulfilled executes when the instance of the class loads. The onRejected executes if the instance of the class fails to load.

Parameters
ParameterTypeDescriptionRequired
onFulfilled

The function to call when the promise resolves.

onRejected

The function to execute when the promise fails.

Returns
Promise<TResult1 | TResult2>

Returns a new promise for the result of onFulfilled that may be used to chain additional functions.

Example
// Although this example uses MapView, any class instance that is a promise may use when() in the same way
let view = new MapView();
view.when(function(){
// This function will execute once the promise is resolved
}, function(error){
// This function will execute if the promise is rejected due to an error
});