aboutsummaryrefslogtreecommitdiff
path: root/docs/guides/ecosystem/mongoose.md
blob: c06821ddea4224d3a738082b6f9b99c789f5778f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
---
name: Read and write data to MongoDB using Mongoose and Bun
---

MongoDB and Mongoose work out of the box with Bun. This guide assumes you've already installed MongoDB and are running it as background process/service on your development machine. Follow [this guide](https://www.mongodb.com/docs/manual/installation/) for details.

---

Once MongoDB is running, create a directory and initialize it with `bun init`.

```bash
mkdir mongoose-app
cd mongoose-app
bun init
```

---

Then add Mongoose as a dependency.

```bash
bun add mongoose
```

---

In `schema.ts` we'll declare and export a simple `Animal` model.

```ts#schema.ts
import * as mongoose from 'mongoose';

const animalSchema = new mongoose.Schema(
  {
    name: {type: String, required: true},
    sound: {type: String, required: true},
  },
  {
    methods: {
      speak() {
        console.log(`${this.sound}!`);
      },
    },
  }
);

export type Animal = mongoose.InferSchemaType<typeof animalSchema>;
export const Animal = mongoose.model('Animal', animalSchema);
```

---

Now from `index.ts` we can import `Animal`, connect to MongoDB, and add some data to our database.

```ts#index.ts
import * as mongoose from 'mongoose';
import {Animal} from './schema';

// connect to database
await mongoose.connect('mongodb://127.0.0.1:27017/mongoose-app');

// create new Animal
const cow = new Animal({
  name: 'Cow',
  sound: 'Moo',
});
await cow.save(); // saves to the database

// read all Animals
const animals = await Animal.find();
animals[0].speak(); // logs "Moo!"

// disconnect
await mongoose.disconnect();
```

---

Let's run this with `bun run`.

```bash
$ bun run index.ts
Moo!
```

---

This is a simple introduction to using Mongoose with TypeScript and Bun. As you build your application, refer to the official [MongoDB](https://docs.mongodb.com/) and [Mongoose](https://mongoosejs.com/docs/) sites for complete documentation.
36744034dd5e1a3c0?s=13&d=retro' width='13' height='13' alt='Gravatar' /> Jarred Sumner 1-2/+2 2022-02-06Update README.mdGravatar Jarred Sumner 1-0/+15 2022-02-05Add unit test for toml importsGravatar Jarred Sumner 2-0/+47 2022-02-05[TOML] Fix bug with [[arrays]]Gravatar Jarred Sumner 1-2/+5 2022-02-05Handle promise rejections in testsGravatar Jarred Sumner 2-19/+35 2022-02-05Update resolve_path.zigGravatar Jarred Sumner 1-37/+35 2022-02-05Always try to load bunfig.toml for `install`, `dev`, `bun`, `test`Gravatar Jarred Sumner 1-3/+25 2022-02-05()Gravatar Jarred Sumner 1-1/+1 2022-02-05One less memcpyGravatar Jarred Sumner 1-68/+100 2022-02-05Further reliability improvements to http clientGravatar Jarred Sumner 2-14/+62 2022-02-05Implement keep-alive but disable itGravatar Jarred Sumner 2-17/+126 2022-02-05Make bun-install slower but more reliable on Linux Kernel 5.5 and lowerGravatar Jarred SUmner 1-112/+31 2022-02-04Several reliability improvements to HTTPGravatar Jarred SUmner 12-141/+189 2022-02-04reminderGravatar Jarred Sumner 3-5/+6 2022-02-04`path.resolve()` passes testsGravatar Jarred Sumner 2-13/+81 2022-02-04Update multiple-var.jsGravatar Jarred Sumner 1-1/+2 2022-02-04:camera:Gravatar Jarred Sumner 74-340/+669 2022-02-04Update snippets.jsonGravatar Jarred Sumner 1-1/+3 2022-02-04Add integration test for reading .json files that have UTF-8 string literalsGravatar Jarred Sumner 2-0/+9 2022-02-04[http] fix segfaultGravatar Jarred Sumner 1-17/+25 2022-02-04[bun dev] Fix bug with serving static files on next.js apps introduced in af6...Gravatar Jarred Sumner 1-5/+7 2022-02-04Update types.zigGravatar Jarred Sumner 1-9/+10 2022-02-04Update test_command.zigGravatar Jarred Sumner 1-2/+0 2022-02-04`path.normalize()` tests passGravatar Jarred Sumner 2-146/+213 2022-02-03Fix test failures in path.joinGravatar Jarred Sumner 1-8/+115 2022-02-03Update mimalloc_arena.zigGravatar Jarred Sumner 1-0/+9 2022-02-03[bun test] Support multiple filesGravatar Jarred Sumner 1-2/+12 2022-02-03Update js_ast.zigGravatar Jarred Sumner 1-0/+1 2022-02-03Support loading multiple entry points by changing what `bun:main` points toGravatar Jarred Sumner 6-4/+36 2022-02-03[bun install] Configurable max http retry countGravatar Jarred Sumner 1-0/+7 2022-02-03Missing newline in errors in bun installGravatar Jarred Sumner 1-4/+8 2022-02-03Fix bug with http clientGravatar Jarred Sumner 6-107/+101 2022-02-03Move detectFastRefresh to later so HTTP request handler starts fasterGravatar Jarred Sumner 1-2/+1 2022-02-03Fix bug with macro remaps in Bun.Transpiler apiGravatar Jarred Sumner 2-5/+8 2022-02-03Slight improvement to non-ascii file path handlingGravatar Jarred Sumner 4-18/+79 2022-02-02`path.relative` passes Node's tests (which also fixed bugs)Gravatar Jarred Sumner 8-283/+571