में स्थिर मॉडल परिभाषाओं मैं एक नेवला स्कीमा बना दिया और मॉडल, नामित अभियान के लिए कुछ स्थिर तरीकों गयी।नेवला टाइपप्रति
अगर मैं अभियान console.log मैं तरीकों उस पर उपस्थित देख सकते हैं। समस्या यह है कि मुझे नहीं पता कि उन विधियों को कहां जोड़ना है ताकि टाइपस्क्रिप्ट उनके बारे में भी जागरूक हो।
तो मैं उन्हें अपने CampaignModelInterface में जोड़ने के लिए, वे मॉडल की घटनाओं के लिए ही उपलब्ध हैं (या कम से कम टीएस सोचता है कि वे कर रहे हैं)।
campaignSchema.ts
export interface CampaignModelInterface extends CampaignInterface, Document {
// will only show on model instance
}
export const CampaignSchema = new Schema({
title: { type: String, required: true },
titleId: { type: String, required: true }
...etc
)}
CampaignSchema.statics.getLiveCampaigns = Promise.method(function(){
const now: Date = new Date()
return this.find({
$and: [{startDate: {$lte: now} }, {endDate: {$gte: now} }]
}).exec()
})
const Campaign = mongoose.model<CampaignModelInterface>('Campaign', CampaignSchema)
export default Campaign
मैं भी Campaign.schema.statics के माध्यम से उस तक पहुंचने में कोशिश की, लेकिन भाग्य के बिना।
किसी टीएस मॉडल, नहीं मॉडल उदाहरणों पर उपस्थित तरीकों के बारे में पता करने के लिए कैसे को सलाह कर सकते हैं?
धन्यवाद! आश्चर्यचकित मैं पहले आपके मूल उत्तर में नहीं आया :) जैसा कि आपने सुझाव दिया था, इसे काम करने में सक्षम था। अगर मैं इसे सही ढंग से मिल गया, मैं अब CampaignModelInterface पर मेरे सभी Schema.static तरीकों और CampaignDocumentInterface पर सभी Schema.method तरीकों डाल देंगे? –
वैसे मैंने व्यक्तिगत रूप से इसे स्थापित किया है ताकि 'अभियान डॉक्यूमेंटइंटरफेस' में केवल स्कीमा (जैसा कि 'अभियानशेमा' में परिभाषित किया गया है) शामिल है। 'अभियान इंटरफेस' में आपकी सभी 'Schema.method' विधियां हैं, और' अभियानमोडेलइंटरफेस 'में आपकी सभी' Schema.static' विधियां हैं। –
आप 'CampaignDocumentInterface' में भी अपनी' Schema.method' विधियों की घोषणा कर सकते हैं, मैं व्यक्तिगत रूप से अलगाव को प्राथमिकता देता हूं। –