Back in March 2022, we announced a new feature, Heroku Data in Salesforce Functions, which lets you securely access Heroku Postgres, Heroku Data for Redis, and Apache Kafka on Heroku directly from your function. Today, we are releasing a new set of recipes on our Functions Recipes sample application showing you how to write code in Java and Node.js to access Postgres and Redis resources from a function, and how to write unit tests for them.
To access Heroku Postgres from a Node.js function, we are using the
node-postgres npm package. There is no restriction on using a different one, or relying on a query generator or ORM, if that’s what you need.
Two things to keep in mind:
- Install the dependency on your Functions project by running
- Access the Heroku Data resource by using the
DATABASE_URLenvironment variable, which can be set manually on the local development experience, or by attaching the resource to the compute environment
You can find the full source for the Postgres recipe with Node.js in the Functions Recipes GitHub repository.
For Java, we are using the
org.postgresql JDBC driver. Similar to the Node.js recipe, we will need to add this dependency to the
pom.xml file and rely on the
DATABASE_URL to create the connection to the database.
You can find the full source for the Postgres recipe with Java in the Functions Recipes GitHub repository.
Heroku Data for Redis
To access Heroku Data for Redis from a Node.js function, we are using the
node-redis official npm package, but there is no restriction on using any other library from the npm ecosystem, for example, the popular
Make sure to install the dependency of your choice and connect using the
REDIS_URL environment variable provided by Heroku Data.
You can find the full source for the Redis recipe with Node.js in the Functions Recipes GitHub repository.
For Java, we are using the Jedis client, but you can rely on any other client of your choice (see a list of available clients per programming language). Just make sure to reference the library in your
You can find the full source for the Redis recipe with Java in the Functions Recipes GitHub repository.
We’ve implemented a new feature in the Functions Recipes sample application! Now, you will be able to see the source code of all the test files within the app. Remember, it is a best practice to always write tests for your code. With these recipes, you now have a good way to see how functions can be tested, and external resources like database connections can be mocked, using tools recommended by the Salesforce Functions team.
Learn more about Salesforce Functions in our Developer Center with curated content and resources created by our team and other folks at Salesforce.
I also presented a series of videos on how to connect to Heroku Data from Functions, including Apache Kafka. Take a look to learn more:
- codeLive: Heroku Data in Functions with Postgres (Video)
- codeLive: Heroku Data in Functions with Redis (Video)
- codeLive: Heroku Data in Functions with Apache Kafka (Video)
About the author
Julián Duque is a Principal Developer Advocate at Salesforce. He is a developer and educator and spends his time running TTRPG games online, as well as playing and training his Mini Aussie, Cumbia.