sql >> データベース >  >> NoSQL >> MongoDB

明確に型付けされたものを使用してTypescriptでMongooseの型付きモデルとスキーマを書き込むためのクラスとインターフェイス

    これが私がこれを行う方法です:

    1. TypeScriptクラスを定義する これでロジックが定義されます。
    2. インターフェースを定義する (私はDocumentと名付けています):それはタイプ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. 別のタイムゾーンで年月日ごとに集計する方法

    2. Elastic Beanstalkにmongodbをインストールするにはどうすればいいですか?

    3. redis/php-resqueを使用した同時ImageMagickリクエストの最適化

    4. PHPを使用してmongodbに日付とタイムスタンプを挿入および取得する