Node.js Quickstart | Convex Developer Hub
Learn how to query data from Convex in a Node.js project.
For instructions for subscriptions instead of point-in-time queries and more project configurations (TypeScript, bundlers, CJS vs ESM) see Node.js notes.
Create a new npm project
Create a new directory for your Node.js project.
mkdir my-project && cd my-project && npm init -y && npm pkg set type="module"Install the Convex client and server library
Install the
convexpackage which provides a convenient interface for working with Convex from JavaScript.Also install the
dotenvlibrary for loading.envfiles.npm install convex dotenvSet up a Convex dev deployment
Next, run
npx convex dev. This will prompt you to log in with GitHub, create a project, and save your production and deployment URLs.It will also create a
convex/folder for you to write your backend API functions in. Thedevcommand will then continue running to sync your functions with your dev deployment in the cloud.Create sample data for your database
In a new terminal window, create a
sampleData.jsonlfile with some sample data.sampleData.jsonl
{"text": "Buy groceries", "isCompleted": true}
{"text": "Go for a swim", "isCompleted": true}
{"text": "Integrate Convex", "isCompleted": false}Add the sample data to your database
Now that your project is ready, add a
taskstable with the sample data into your Convex database with theimportcommand.npx convex import --table tasks sampleData.jsonlExpose a database query
Add a new file
tasks.jsin theconvex/folder with a query function that loads the data.Exporting a query function from this file declares an API function named after the file and the export name,
api.tasks.get.convex/tasks.js
import { query } from "./_generated/server";
export const get = query({
args: {},
handler: async (ctx) => {
return await ctx.db.query("tasks").collect();
},
});Connect the script to your backend
In a new file
script.js, create aConvexHttpClientusing the URL of your development environment.script.js
import { ConvexHttpClient } from "convex/browser";
import { api } from "./convex/_generated/api.js";
import * as dotenv from "dotenv";
dotenv.config({ path: ".env.local" });
const client = new ConvexHttpClient(process.env["CONVEX_URL"]);
client.query(api.tasks.get).then(console.log);Run the script
Run the script from the same directory and see the list of tasks logged to the terminal.
See the complete Node.js documentation.