0

この質問はこれに「似ている」ですが、代替案を求めています(存在する場合)。

mongo シェルでNumsコレクションを持つデータベースを作成しました。 ODM として使用して、そのコレクションにアクセスし、番号を一覧表示したいと考えています。 numbers
mongoose

var mongoose = require('mongoose')
  , Schema = mongoose.Schema;

mongoose.connect('mongodb://localhost/Nums');
mongoose.model('numbers', new Schema({value: Number}));

mongoose.connection.on('open', function(ref) {
  console.log('Connected to mongo server.');
});

mongoose.connection.on('error', function(err) {
  console.log('Could not connect to mongo server!');
  console.log(err);
});

var nums = mongoose.model('numbers');
nums.find({}, function(err, data) {console.log(err, data, data.length);});

作成済みのデータベース/コレクションにアクセスするには、常にmongoose.modelandnew Schema呼び出しを行う必要がありますか? このステップは省略できますか?

このステップは 1 回記述する必要がありますが、スキーマが非常に大きい場合、mongo から db/collection を取り出すだけでも非常に面倒なようです。

これに対する回避策はありますか、それともこれが唯一の方法ですか?

4

2 に答える 2

0

いくつかの実験の後、答えは「スキーマとモデルを指定する必要がありますが、それほど悪くはありません」です。

たとえば、私は次のことができます。

mongoose.connect('mongodb://localhost/Nums');
mongoose.model('numbers', new Schema());

しかし、@ JohnnyHKが言及しているように、フィールド型キャストを見逃しています。

また、大規模なスキーマがある場合、型キャストする対象を指定できます。

mongoose.connect('mongodb://localhost/Nums');
mongoose.model('numbers', new Schema({username: String, address: String}));

2つのフィールドのみをタイプキャストしました。

于 2012-11-01T21:48:04.070 に答える