मैं इसे इस तरह से करता हूं:
- टाइपस्क्रिप्ट को परिभाषित करें वर्ग जो हमारे तर्क को परिभाषित करेगा।
- इंटरफ़ेस को परिभाषित करें (जिसे मैं दस्तावेज़ का नाम देता हूं):वह प्रकार है
mongoose
के साथ बातचीत करेगा - मॉडल को परिभाषित करें (हम ढूंढने, डालने, अपडेट करने में सक्षम होंगे...)
कोड में:
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 :)
})