2012-04-16 14 views
1

こんにちは、expressとmongooseを使ってnodejs MVCで遊んでみてください。Coffee-Script NodejsとMongoose

私は、次のコードを持っている:それは未定義のエラーを投げ続ける理由

Server started on port 3000 

module.js:311 
    throw err; 
     ^
TypeError: Cannot read property 'Quote' of undefined 
    at new <anonymous> (/Users .... 

私はうまくいかないことができます。私は、サーバーを実行するために行くとき

mongoose = require 'mongoose' 
Schema = mongoose.Schema 
mongoose.connect 'mongodb://localhost/quotes' 

Quote = new Schema() 

Quote.add { 
    quote : { type: String, required: true} 
    , rank : Number 
} 

quote = new mongoose.model 'Quote', Quote 


module.exports = 

    index: (req,res, next) -> 
    quote.find {}, (err,docs) -> 
     res.render docs 

を、私は、次の受信します。

EDIT:

ここでは、私はmongoose.modelがコンストラクタではないと信じてコンパイルJS

var Quote, Schema, mongoose, quote; 

mongoose = require('mongoose'); 

Schema = mongoose.Schema; 

mongoose.connect('mongodb://localhost/quotes'); 

Quote = new Schema(); 

Quote.add({ 
    quote: { 
    type: String, 
    required: true 
    }, 
    rank: Number 
}); 

quote = new mongoose.model('Quote', Quote); 

module.exports = { 
    index: function(req, res, next) { 
    return quote.find({}, function(err, docs) { 
     return res.render(docs); 
    }); 
    } 
}; 
+0

生成されたjavascriptはどのように見えますか? –

+0

私はあなたに質問を追加しました:o) – Menztrual

答えて

2

です。私がモンゴースを使ってからしばらくしていますが、私はSchema.addのいずれかを覚えていません。フィールドはコンストラクタ呼び出しに渡されるべきです。だから、次のようになります。

Quote = new Schema 
    quote : { type: String, required: true } 
    rank : Number 

quote = mongoose.model 'Quote', Quote 

編集Schema.addはそれが実際にコンストラクタから呼び出されています、大丈夫です。それはドキュメントで簡単に言及されています。

+0

ありがとう。新しいことの通過は問題の内容でした。 :D – Menztrual

関連する問題