Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function writeToAlgolia(object, indexName, operation) {
- const ALGOLIA_ID = functions.config().algolia.app_id;
- const ALGOLIA_ADMIN_KEY = functions.config().algolia.api_key;
- const client = algoliasearch(ALGOLIA_ID, ALGOLIA_ADMIN_KEY);
- const index = client.initIndex(indexName);
- switch(operation) {
- case 'create':
- return new Promise((resolve, reject) => {
- index.addObject(object)
- .then(res => { console.log('res GOOD', res); resolve(res) })
- .catch(err => { console.log('err BAD', err); reject(err) });
- });
- case 'update':
- return new Promise((resolve, reject) => {
- index.saveObject(object)
- .then(res => { console.log('res GOOD', res); resolve(res) })
- .catch(err => { console.log('err BAD', err); reject(err) });
- });
- case 'delete':
- return new Promise((resolve, reject) => {
- index.deleteObject(object.objectID)
- .then(res => { console.log('res GOOD', res); resolve(res) })
- .catch(err => { console.log('err BAD', err); reject(err) });
- });
- }
- }
- exports.syncEquipmentToAlgolia =
- functions
- .firestore
- .document('equipment/{document}')
- .onWrite((change, context) => {
- let operation = '';
- let data = change.after.data();
- if (!change.before.exists) operation = 'create';
- else if (!change.after.exists) operation = 'delete';
- else operation = 'update';
- if (data === null) {
- data = { objectID: context.params.document }
- } else {
- data = {
- ...data,
- objectID: context.params.document
- }
- }
- return writeToAlgolia(data, 'equipment', operation)
- .then(res => console.log(`SUCCESS: ${operation}`, res))
- .catch(err => console.log(`ERROR: ${operation}`, err));
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement