So the point of Schema is to define what properties can be read.

The point of model is instead to define what collection is read.

Try

const uri = process.env.DB_URL;
const port = process.env.PORT || 3000;
const localTest = "mongodb://127.0.0.1:27017/test"

const express = require("express")
const mongoose = require("mongoose")
const app = express()

app.use(express.static("public"))

main().catch((err) => console.log(err))

async function main() {
  await mongoose.connect(localTest)
}

// There is no "goingCrazy" property in Kitten
// There is instead a "name" property of the type String.
const kittySchema = new mongoose.Schema({
  goingCrazy: Number
})

const Kitten = mongoose.model("Mitten", kittySchema)

async function doSomething() {
  const cats = await Kitten.countDocuments()
  const names = await Kitten.find()
  console.log(cats)
  console.log(names)
}
doSomething()

app.listen(port, () => console.log(`Server ready on port ${port}.`))

module.exports = app

This will read the empty “Mitten” collection, as opposed to the “Kitten” collection.