const newTodo = await baas.collection("todos").create({
text: "Setup MongoDB schema",
completed: false,
});const todo = await baas.collection("todos").get("DOCUMENT_ID");
console.log("Todo item data:", todo.data.text);// Fetch all documents
const allTodos = await baas.collection("todos").find();
// Fetch matching documents directly (alias to .get())
const list = await baas.collection("todos")
.where("completed", "equals", false)
.orderBy("createdAt", "desc")
.limit(10)
.find();// Count all documents in the collection
const totalCount = await baas.collection("todos").count();
// Count with query filters applied
const pendingCount = await baas.collection("todos")
.where("completed", "equals", false)
.count();const result = await baas.collection("todos").paginate({
page: 1,
limit: 10,
});
console.log("Items on page 1:", result.items);
console.log("Total matched pages:", result.pages);
console.log("Has next page:", result.hasNext);await baas.collection("todos").update("DOCUMENT_ID", {
completed: true,
});await baas.collection("todos").delete("DOCUMENT_ID");Pass your custom schema interface as a generic to collection<T>(). This enables full input type validation and type autocomplete on the returned Document<T> envelope:
import type { Document } from "@kroxt/baas-sdk";
interface Todo {
text: string;
completed: boolean;
}
const todosCollection = baas.collection<Todo>("todos");
// Create returns a typed Document<Todo>
const newTodo = await todosCollection.create({
text: "Setup TypeScript docs",
completed: false, // Type checked!
});
// Query returns Document<Todo>[]
const list: Document<Todo>[] = await todosCollection
.where("completed", "equals", false)
.get();
list.forEach((doc) => {
console.log("System ID:", doc._id); // Envelope property
console.log("Todo Text:", doc.data.text); // Custom fields are nested inside .data
});