1

Ok, I am using Algolia for handling search within my app. The following code adds whatever is in my database to my Algolia Index. However, whenever the data is imported, all of the values in a firebase node get placed under "text" in the Algolia Index.

How can make it to where it is stored as the key value pair found in Firebase.

i.e.

address: 1234 Main St.

VS. / (Instead of)

text:

address: 1234 Main St.


My Code:

exports.indexentry = functions.database
  .ref('/blog-posts/{blogid}/text')
  .onWrite(event => {
    const index = client.initIndex(ALGOLIA_POSTS_INDEX_NAME);
    const firebaseObject = {
      text: event.data.val(),
      objectID: event.params.blogid,
    };
  });

enter image description here

ethanfox27
  • 890
  • 1
  • 9
  • 25

1 Answers1

2

So what you are missing here, is the pushing of the data to Algolia. What you can do if you want to have all the firebase data in an object, is assigning it to a new object, as well as the objectID

exports.indexentry = functions.database
  .ref('/blog-posts/{blogid}/text')
  .onWrite(event => {
    const index = client.initIndex(ALGOLIA_POSTS_INDEX_NAME);
    const firebaseObject = Object.assign({}, event.data.val(), {
      objectID: event.params.blogid,
    });
    index.saveObject(firebaseObject); // .then or .catch as well
  });

Does that make sense?

Haroen Viaene
  • 1,329
  • 18
  • 33