MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

klasy i interfejsy do pisania typizowanych modeli i schematów Mongoose w Typescript za pomocą zdecydowanie typed

Oto jak to robię:

  1. Zdefiniuj klasę TypeScript które zdefiniują naszą logikę.
  2. Zdefiniuj interfejs (który nazywam dokumentem):jest to typ mongoose będzie wchodzić w interakcje z
  3. Zdefiniuj model (będziemy mogli znaleźć, wstawić, zaktualizować...)

W kodzie:

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)

Jak bym tego używał? wyobraźmy sobie, że kod jest przechowywany w user.ts , teraz możesz wykonać następujące czynności:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mangusta — ObjectId, który odwołuje się do dokumentu podrzędnego

  2. Nie można uruchomić MongoDB:Błąd systemu 1067 w systemie Windows

  3. Błąd Robo 3T:Sieć jest nieosiągalna

  4. Jak wysłać zapytanie do elementu względnego za pomocą MongoDB

  5. Zapisywanie przedmiotów w Mongoose dla pętli za pomocą metod schematu