2012-05-11 6 views
76

の最後になぜマングースは常に、例えば私のコレクション名

var Dataset = mongoose.model('data', dataSchema); 

そして、「ユーザー」と呼ばれるコレクション内のこのコードの結果を作成している「件のデータ」と呼ばれるコレクション内のこのコードの結果をSを追加しませんマングースは、スマートにしようとしている

+3

これはRailsの規約です。あなたはオブジェクト "user"を持っており、それを "users"コレクションに格納します。モンゴースでも同じですね。 –

+0

ええ、興味深いことに十分なvar Dataset = mongoose.model( 'datas'、dataSchema); datasというコレクションになります。 –

+0

複数形の論理はあまり意味がない(またはスマート、あなたが期待したものに依存する)とは思われません。私はあなたが正確にどのように動作するかを知ることができると確信しています(ソースを見つける)。 –

答えて

132

var User = mongoose.model('user', dataSchema); 

感謝を作成しています。ただし、あなたが好きなようにそれを強制することができますmongoose.modelの

var dataSchema = new Schema({..}, { collection: 'data' })

+12

です。「s」を追加すると、フレームワークがよりインテリジェントになり、IMHO、それは悪い考えです。そのマングースとは別に素晴らしいフレームワークです。 – Roberto

+8

これは古い互換性を奪う貧しい選択肢です。私たちはそれに固執しました。 – aaronheckmann

+0

あなたは何を意味しますか?複数形ではなく単数形のコレクション名を使用したい場合、私は問題を起こすでしょうか? – Vadorequest

26

APIの構造はこれです:何マングース

Mongoose#model(name, [schema], [collection], [skipInit]) 

はマングース、何のコレクション引数が渡されない場合は、ということですモデル名を複数形にしてコレクション名を生成します。この動作が気に入らない場合は、コレクション名を渡すか、スキーマコレクション名オプションを設定します。

例:

var schema = new Schema({ name: String }, { collection: 'actor' }); 

または

schema.set('collection', 'actor'); 

または

var collectionName = 'actor' 
var M = mongoose.model('Actor', schema, collectionName); 
0

あなたは、単にコレクションのための実際の名前を定義するための3番目の引数として文字列を追加することができます。それぞれdatauserとして名を維持するために、あなたの例を拡張:

var Dataset = mongoose.model('data', dataSchema, 'data'); 

var User = mongoose.model('user', dataSchema, 'user'); 
0

あなたは三番目のパラメータとしてコレクション名を追加することができます。 Typescriptを使用した例を参照してください。

import DataAccess = require('../DataAccess'); 
import IUser = require("../../Models/Interfaces/IUser"); 

var mongoose = DataAccess.mongooseInstance; 
var mongooseConnection = DataAccess.mongooseConnection; 

class UserSchema { 
     static get schema() { 
     var schema = mongoose.Schema({ 
      _id : { 
       type: String 
      }, 
      Name: { 
       type: String, 
       required: true 
      }, 
      Age: { 
       type: Number, 
       required: true 
      } 
     }); 

     return schema; 
    } 
} 
var schema:any = mongooseConnection.model<IUser>("User", 
UserSchema.schema,"User"); 
export = schema; 
関連する問題