sql >> Database >  >> NoSQL >> MongoDB

klassen en interfaces om getypte modellen en schema's van Mongoose in Typescript te schrijven met behulp van suretyped

Dit is hoe ik dit doe:

  1. Definieer TypeScript klasse die onze logica zal bepalen.
  2. Definieer de interface (die ik Document noem):dat is het type mongoose zal communiceren met
  3. Definieer het model (we kunnen vinden, invoegen, bijwerken...)

In code:

import { Document, Schema, model } from 'mongoose'

// 1) CLASS
export class User {
  name: string
  mail: string

  constructor(data: {
    mail: string
    name: string
  }) {
    this.mail = data.mail
    this.name = data.name
  }
  
  /* any method would be defined here*/
  foo(): string {
     return this.name.toUpperCase() // whatever
  }
}

// no necessary to export the schema (keep it private to the module)
var schema = new Schema({
  mail: { required: true, type: String },
  name: { required: false, type: String }
})
// register each method at schema
schema.method('foo', User.prototype.foo)

// 2) Document
export interface UserDocument extends User, Document { }

// 3) MODEL
export const Users = model<UserDocument>('User', schema)

Hoe zou ik dit gebruiken? laten we ons voorstellen dat code wordt opgeslagen in user.ts , zou u nu het volgende kunnen doen:

import { User, UserDocument, Users } from 'user'

let myUser = new User({ name: 'a', mail: '[email protected]' })
Users.create(myUser, (err: any, doc: UserDocument) => {
   if (err) { ... }
   console.log(doc._id) // id at DB
   console.log(doc.name) // a
   doc.foo() // works :)
})



  1. MongoDB gebruikt NOT en AND samen

  2. Groupby in MongoTemplate retourneert lege velden

  3. gke kan Transparent Huge Pages niet uitschakelen... toestemming geweigerd

  4. Hoe verwijder je een document in Mongodb?