feat(firestore): add VectorValue type and vector() API #8739
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
feat(firestore): add VectorValue type and vector() API
Adds Firestore Vector field support to React Native Firebase:
VectorValueclass andvector(values?: number[])constructorMotivation
Brings RNFB Firestore to parity with Firebase SDKs that added Vector support:
API
import { VectorValue, vector } from '@react-native-firebase/firestore'await setDoc(docRef, { embedding: vector([0.1, 0.2, 0.3]) })firebase.firestore.VectorValue,firebase.firestore.vector(values)Implementation
VectorValuewith validation,isEqual,toJSONvectortype; wired intogenerateNativeDataandparseNativeDataVectorValueinweb/convert.jsFIRVectorValue(no hard crash on older SDKs)com.google.firebase.firestore.VectorValueVectorValuetype andvector()declaration; added toDocumentFieldTypeMinimum native versions for full functionality:
Older SDKs won’t crash (reflection guards), but vectors will not function.
Usage Example
Tests
packages/firestore/__tests__/vector.test.tsTypes
packages/firestore/lib/index.d.tsto includeVectorValue,vector(), andDocumentFieldTypeunionChecklist
I read the Contributor Guide and followed the process outlined there for submitting PRs.
My change supports the following platforms;
My change includes tests;
packages/**/e2epackages/**/__tests__I have updated TypeScript types that are affected by my change.
This is a breaking change;
Notes