2021年7月1日 星期四

[mongodb, nodejs, mongoose, connect] How to access Mongodb Altas Database using Mongoose

How to access MongoDB Altas Database using Mongoose

井民全, Jing, mqjing@gmail.com


1. Altas Dashboard

Home: https://www.mongodb.com/cloud/atlas

Click [Connect]


2. Application

2.1. Install requirement

yarn add mongoose


2.2. Code

File: src/index.ts

const mongoose = require('mongoose');


const username = 'jing';

const passwd = '1234';

const databaseName = 'database-test-01';


const uri = `mongodb+srv://${username}:${passwd}@cluster0.jllg8.mongodb.net/${databaseName}?retryWrites=true&w=majority`;

mongoose.connect(uri, {useNewUrlParser: true, useUnifiedTopology: true});


interface StatusType {

  id: number;

  msg: string;

}


const schemaAJV = {

  properties: {

      id: {type: "number"},

      msg: {type: "string"}

  },

}


const schema = {

  id: {

    type: Number,

    required: true

  },

  msg: {

    type: String,

    required: true

  }

}

let s1:StatusType = {id: 123, msg: 'This is test msg 123.'};


const model= mongoose.model('Status', schema); // Create 'Status' collection

const status1 = new model(s1); // ok     // create a document

const status2 = new model({id: 123, msg123: 'This is test msg.'}); // ValidationError error!


status1.save().then(() => {console.log('status1 saved');}); // insert the document

status2.save().then(() => {console.log('status2 saved');}); // throw ValidationError: Status validation failed: msg: Path `msg` is required.


2.3. Build & Test


tsc && node index.js

2.4. Result


3. References

  1. MongoDB Altas, https://www.mongodb.com/cloud/atlas

  2. Mongoose API, https://mongoosejs.com/docs/api.html#

  3. Mongoose Schema Type, https://mongoosejs.com/docs/schematypes.html

  4. https://github.com/jdthorpe/mongoose-ajv-plugin

  5. Using TypeScript with MongoDB, https://medium.com/swlh/using-typescript-with-mongodb-393caf7adfef