1

Express と mongoose を使用して nodejs MVC を試してみてください。

次のコードがあります。

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

サーバーを実行すると、次のメッセージが表示されます。

Server started on port 3000

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

未定義エラーがスローされ続ける理由がわかりません。

編集:

これがコンパイルされた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);
    });
  }
};
4

1 に答える 1

2

私はmongoose.modelコンストラクタではないと信じています。私がマングースを使用してからしばらく経ちましたが、Schema.addどちらも覚えていません。フィールドはコンストラクター呼び出しに渡される必要があります。したがって、次のようになります。

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

quote = mongoose.model 'Quote', Quote

edit :Schema.add結構です。実際にはコンストラクターから呼び出されます。ドキュメントで簡単に言及されているだけです。

于 2012-04-16T10:29:28.453 に答える