कुछ पुराने कोड में निम्न टाइपरर फसल हो गई है।किसी मॉडल के खोज पर मोंगोस टाइप एरर एक विधि
TypeError: Object #<Object> has no method 'findOne'
मॉडल जो हाल ही में प्रभावित हुआ था, में दो नई स्थैतिक विधियों को परिभाषित किया गया था और उन विधियों ने बाहरी मॉडल का संदर्भ दिया था। नई स्थैतिक विधियों का समर्थन करने के बाद, मैं बाहरी मॉडल के आवश्यक बयान होने के मूल कारण को निर्धारित करने में सक्षम था। पैटर्न ऐसा दिखाई देता है: कि लेखन त्रुटि की ओर जाता है:
var UserModel = require('./user');
var GroupSchema = new Schema({
name: String,
users: [{ type : Schema.ObjectId, ref: 'UserModel'}],
});
GroupSchema.statics.findSomeUsers = function(group, callback) {
this.find({name : session_user._id}, function(err, groups) {
UserModel.find({_id : {$in : group.users}}, function(err,patients) {
// do magic
});
});
};
module.exports = mongoose.model('GroupModel', GroupSchema);
कि GroupModel.findOne ({ 'गोगो' नाम}) कॉल आवेदन पत्र में एक कोड टुकड़ा नहीं है। जब मैं GroupSchema में UserModel के लिए आवश्यक कथन हटा देता हूं, तो ऐप कोड दोबारा काम करता है।
जावास्क्रिप्ट को लगता है कि क्यों लगता है एक() आवश्यकता आवश्यकता के अतिरिक्त के साथ एक उदाहरण विधि है?
./user.js वह जगह है जहां UserModel परिभाषित किया गया है। वहां कोई आवश्यकता नहीं है। मैं आपके उत्तर को समझ नहीं रहा हूं - var UserModel = mongoose.model ('userModel') - विफल रहता है क्योंकि यह नहीं जानता कि स्कीमा क्या है (जिसे user.js में परिभाषित किया गया है)। – Greg
आवश्यकताएं हटाएं, और userModel.findOne() को mongoose.model ('UserModel') में बदलें। FindOne() – Greg
क्या आपने 'userModel' को ''/user'' में परिभाषित किया है? 'मॉड्यूल.एक्सपोर्ट्स = mongoose.model ('UserModel', UserSchema) जैसे smth;'? यदि आपके पास है, तो 'mongoose.model (' userModel ')' ठीक काम करना चाहिए। लूपिंग के लिए जरूरी है, मैं शर्मिंदा नहीं हूं कि यह आपका मामला है, लेकिन ऐसा लगता है। –