A DocumentChange represents a change to the documents matching a query. It contains the document affected and the type of change that occurred.
DocumentChange
Package
@google-cloud/firestoreConstructors
(constructor)(type, document, oldIndex, newIndex)
constructor
(
type
:
DocumentChangeType
,
document
:
QueryDocumentSnapshot<AppModelType
,
DbModelType
> ,
oldIndex
:
number
,
newIndex
:
number
);
Constructs a new instance of the DocumentChange
class
type
document
oldIndex
number
The index in the documents array prior to this change.
newIndex
number
The index in the documents array after this change.
Properties
doc
get
doc
()
:
QueryDocumentSnapshot<AppModelType
,
DbModelType
> ;
The document affected by this change.
{QueryDocumentSnapshot} DocumentChange#doc
let
query
=
firestore
.
collection
(
'col'
).
where
(
'foo'
,
'=='
,
'bar'
);
let
unsubscribe
=
query
.
onSnapshot
(
querySnapshot
=
>
{
for
(
let
change
of
querySnapshot
.
docChanges
)
{
console
.
log
(
change
.
doc
.
data
());
}
});
// Remove this listener.
unsubscribe
();
newIndex
get
newIndex
()
:
number
;
The index of the changed document in the result set immediately after this DocumentChange (i.e. supposing that all prior DocumentChange objects and the current DocumentChange object have been applied). Is -1 for 'removed' events.
{number} DocumentChange#newIndex
let
query
=
firestore
.
collection
(
'col'
).
where
(
'foo'
,
'=='
,
'bar'
);
let
docsArray
=
[];
let
unsubscribe
=
query
.
onSnapshot
(
querySnapshot
=
>
{
for
(
let
change
of
querySnapshot
.
docChanges
)
{
if
(
change
.
oldIndex
!==
-
1
)
{
docsArray
.
splice
(
change
.
oldIndex
,
1
);
}
if
(
change
.
newIndex
!==
-
1
)
{
docsArray
.
splice
(
change
.
newIndex
,
0
,
change
.
doc
);
}
}
});
// Remove this listener.
unsubscribe
();
oldIndex
get
oldIndex
()
:
number
;
The index of the changed document in the result set immediately prior to this DocumentChange (i.e. supposing that all prior DocumentChange objects have been applied). Is -1 for 'added' events.
{number} DocumentChange#oldIndex
let
query
=
firestore
.
collection
(
'col'
).
where
(
'foo'
,
'=='
,
'bar'
);
let
docsArray
=
[];
let
unsubscribe
=
query
.
onSnapshot
(
querySnapshot
=
>
{
for
(
let
change
of
querySnapshot
.
docChanges
)
{
if
(
change
.
oldIndex
!==
-
1
)
{
docsArray
.
splice
(
change
.
oldIndex
,
1
);
}
if
(
change
.
newIndex
!==
-
1
)
{
docsArray
.
splice
(
change
.
newIndex
,
0
,
change
.
doc
);
}
}
});
// Remove this listener.
unsubscribe
();
type
get
type
()
:
DocumentChangeType
;
The type of change ('added', 'modified', or 'removed').
{string} DocumentChange#type
let
query
=
firestore
.
collection
(
'col'
).
where
(
'foo'
,
'=='
,
'bar'
);
let
docsArray
=
[];
let
unsubscribe
=
query
.
onSnapshot
(
querySnapshot
=
>
{
for
(
let
change
of
querySnapshot
.
docChanges
)
{
console
.
log
(
`Type of change is
${
change
.
type
}
`
);
}
});
// Remove this listener.
unsubscribe
();
Methods
isEqual(other)
isEqual
(
other
:
firestore
.
DocumentChange<AppModelType
,
DbModelType
> )
:
boolean
;
Returns true if the data in this DocumentChange
is equal to the provided value.
other
FirebaseFirestore.DocumentChange
<AppModelType, DbModelType>
The value to compare against. true if this DocumentChange
is equal to the provided value.
boolean