MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

класове и интерфейси за писане на въведени модели и схеми на Mongoose в Typescript с помощта на определен тип

Ето как правя това:

  1. Дефинирайте клас на TypeScript което ще определи нашата логика.
  2. Дефинирайте интерфейса (който наричам Документ):това е типът mongoose ще взаимодейства с
  3. Дефинирайте модела (ще можем да намерим, вмъкнем, актуализираме...)

В код:

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)

Как бих използвал това? нека си представим, че кодът се съхранява в user.ts , сега ще можете да направите следното:

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. MongoEngine указва предпочитание за четене при заявка

  2. Сигурно внедряване на MongoDB на Amazon AWS

  3. Как да заредите данни в MongoDB, работещ в хост, от вътрешността на Docker, работещ на същата машина?

  4. Пролетни данни MongoDB пример не работи

  5. MongoDB:Сървърът има предупреждения за стартиране „Контролът на достъпа не е активиран за базата данни“