Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
return new Promise((resolve, reject) => {
const db = this.firebase.firestore();
const collectionRef = db.collection(buildCollectionName(type.modelName));
const unsubscribe = collectionRef.onSnapshot((querySnapshot) => {
if (this.getAdapterOptionConfig(snapshotRecordArray, 'isRealtime') && !this.isFastBoot) {
this.realtimeTracker.trackFindAllChanges(type.modelName, collectionRef, store);
}
const requests = querySnapshot.docs.map(docSnapshot => (
this.findRecord(store, type, docSnapshot.id, snapshotRecordArray)
));
Promise.all(requests).then(records => resolve(records)).catch(error => (
reject(new Error(error.message))
));
unsubscribe();
}, error => reject(new Error(error.message)));
});
if (
Object.prototype.hasOwnProperty.call(resourceHash, name)
&& isDocumentReference(resourceHash[name])
) {
const path = buildPathFromRef(resourceHash[name]);
links[name] = path;
}
} else {
const cardinality = modelClass.determineRelationshipType(descriptor, this.store);
let hasManyPath;
if (cardinality === 'manyToOne') {
hasManyPath = buildCollectionName(descriptor.type);
} else {
const collectionName = buildCollectionName(modelClass.modelName);
const docId = resourceHash.id;
hasManyPath = `${collectionName}/${docId}/${name}`;
}
links[name] = hasManyPath;
}
});
buildHasManyCollectionRef(store, snapshot, url, relationship) {
const db = this.firebase.firestore();
const cardinality = snapshot.type.determineRelationshipType(relationship, store);
let collectionRef;
if (cardinality === 'manyToOne') {
const inverse = snapshot.type.inverseFor(relationship.key, store);
const collectionName = buildCollectionName(snapshot.modelName);
const reference = db.collection(collectionName).doc(snapshot.id);
collectionRef = db.collection(url).where(inverse.name, '==', reference);
} else if (Object.prototype.hasOwnProperty.call(relationship.options, 'buildReference')) {
collectionRef = relationship.options.buildReference(db, snapshot.record);
} else {
collectionRef = buildRefFromPath(db, url);
}
return this.buildQuery(collectionRef, relationship.options, snapshot.record);
},
modelClass.eachRelationship((name, descriptor) => {
if (descriptor.kind === 'belongsTo') {
if (
Object.prototype.hasOwnProperty.call(resourceHash, name)
&& isDocumentReference(resourceHash[name])
) {
const path = buildPathFromRef(resourceHash[name]);
links[name] = path;
}
} else {
const cardinality = modelClass.determineRelationshipType(descriptor, this.store);
let hasManyPath;
if (cardinality === 'manyToOne') {
hasManyPath = buildCollectionName(descriptor.type);
} else {
const collectionName = buildCollectionName(modelClass.modelName);
const docId = resourceHash.id;
hasManyPath = `${collectionName}/${docId}/${name}`;
}
links[name] = hasManyPath;
}
});
generateIdForRecord(store, type) {
const db = this.firebase.firestore();
const collectionName = buildCollectionName(type);
return db.collection(collectionName).doc().id;
},
serializeBelongsTo(snapshot, json, relationship) {
this._super(snapshot, json, relationship);
if (json[relationship.key]) {
const collectionName = buildCollectionName(relationship.type);
const docId = json[relationship.key];
const path = `${collectionName}/${docId}`;
json[relationship.key] = buildRefFromPath(this.firebase.firestore(), path);
}
},