Skip to content

Files

Latest commit

 

History

History

convex

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

Welcome to your Convex functions directory!

Write your Convex functions here. See https://docs.convex.dev/using/writing-convex-functions for more.

A query function that takes two arguments looks like:

// myQueryFunction.js
import { query } from "./_generated/server";

export default query(async ({ db }, { first, second }) => {
  // Validate arguments here.
  if (typeof first !== "number" || first < 0) {
    throw new Error("First argument is not a non-negative number.");
  }
  if (typeof second !== "string" || second.length > 1000) {
    throw new Error("Second argument is not a string of length 1000 or less.");
  }

  // Query the database as many times as you need here.
  // See https://docs.convex.dev/using/database-queries to learn how to write queries.
  const documents = await db.query("tablename").collect();

  // Write arbitrary JavaScript here: filter, aggregate, build derived data,
  // remove non-public properties, or create new objects.
  return documents;
});

Using this query function in a React component looks like:

const data = useQuery("myQueryFunction", { first: 10, second: "hello" });

A mutation function looks like:

// myMutationFunction.js
import { mutation } from "./_generated/server";

export default mutation(async ({ db }, { first, second }) => {
  // Validate arguments here.
  if (typeof first !== "string" || typeof second !== "string") {
    throw new Error("Both arguments must be strings");
  }

  // Insert or modify documents in the database here.
  // Mutations can also read from the database like queries.
  const message = { body: first, author: second };
  const id = await db.insert("messages", message);

  // Optionally, return a value from your mutation.
  return await db.get(id);
});

Using this mutation function in a React component looks like:

const mutation = useMutation("myMutationFunction");
function handleButtonPress() {
  // fire and forget, the most common way to use mutations
  mutation({ first: "Hello!", second: "me" });
  // OR
  // use the result once the mutation has completed
  mutation({ first: "Hello!", second: "me" }).then((result) =>
    console.log(result)
  );
}

The Convex CLI is your friend. See everything it can do by running npx convex -h in your project root directory. To learn more, launch the docs with npx convex docs.