2012-11-11 53 views
10

konuşamıyor ve benim app öğreticisindeki hata (biraz değiştirilmiş) TypeError: Object { name: 'fluffy', _id: 509f3377cff8cf6027000002 } has no method 'speak'Kitten ben <a href="http://mongoosejs.com/docs/index.html" rel="noreferrer">mongoose quickstart</a> içinden koşuyorum

Benim koduyla fluffy.speak() üzerinde ölmeye devam: Görüşme

"use strict"; 

var mongoose = require('mongoose') 
    , db = mongoose.createConnection('localhost', 'test'); 

db.on('error', console.error.bind(console, 'connection error:')); 
db.once('open', function() { 
    var kittySchema = new mongoose.Schema({ 
     name: String 
    }); 
    var Kitten = db.model('Kitten', kittySchema); 
    var silence = new Kitten({name: 'Silence'}); 
    console.log(silence.name); 
    kittySchema.methods.speak = function() { 
     var greeting = this.name ? "Meow name is" + this.name : "I don't have a name"; 
     console.log(greeting); 
    }; 

    var fluffy = new Kitten({name: 'fluffy'}); 

    fluffy.speak(); 

    fluffy.save(function(err) { 
     console.log('meow'); 
    }); 

    function logResult(err, result) { 
     console.log(result); 
    } 

    Kitten.find(logResult); 
    Kitten.find({name: /fluff/i }, logResult); 
}); 
+2

Lol, başlık sadece "OFF TOPIC!" Diye çığlık atıyor. : P – Doorknob

+0

Evet yapabilirim! Şu an konuşuyorum! – bjb568

cevap

9

db.model, model şemanızdan derlenmiştir. Bu noktada, modelin prototipine schema.methods eklenir. Bu nedenle, şemasındaki şemasındaki yöntemleri tanımlamanız gerekir.

// ensure this method is defined before... 
kittySchema.methods.speak = function() { 
    var greeting = this.name ? "Meow name is" + this.name : "I don't have a name"; 
    console.log(greeting); 
} 

// ... this line. 
var Kitten = db.model('Kitten', kittySchema); 

// methods added to the schema *afterwards* will not be added to the model's prototype 
kittySchema.methods.bark = function() { 
    console.log("Woof Woof"); 
}; 

(new Kitten()).bark(); // Error! Kittens don't bark. 
İlgili konular