web-dev-qa-db-ja.com

Mongoose-強制コレクション名

Mongooseを使用してデータベースとそのコレクションを作成しようとしています。私のコードは:

var mongoose = require('mongoose');
    var db = mongoose.connect('mongodb://localhost/testdb');
    var Schema = mongoose.Schema;

    var UserInfo = new Schema({
    username : String,
    password : String 
    });

    mongoose.model('UserInfo', UserInfo);

    var user = db.model('UserInfo');


    var admin = new user();
    admin.username = "sss";
    admin.password = "ee";
    admin.save();

このコードを実行すると、mongooseはuserinfoではなくUserInfoという名前のコレクションを作成しました。マングースでコレクション名を強制する方法は?

106
ravi

これはそれを行う必要があります

var UserInfo = new Schema({
  username : String,
  password : String 
}, { collection: 'userinfo' });

詳細については、Mongooseドキュメントの このリンク を参照してください。

174
Thomas Blobaum

Mongoose 2.0.0を使用している場合、collectionNameを3番目の引数として渡します

mongoose.model('UserInfo', UserInfo, 'UserInfo');
74
Bilal Husain

Mongooseは、デフォルトでコレクション名に「s」を追加します。それを避けたい場合は、3番目の引数としてコレクションの名前を渡すだけです:

var mongoose = require('mongoose');
var db = mongoose.connect('mongodb://localhost/testdb');
var Schema = mongoose.Schema;

var UserInfo = new Schema({
    username: String,
    password: String 
});

mongoose.model('UserInfo', UserInfo, 'UserInfo')

tan = new user();
admin.username = 'sss';
admin.password = 'ee';
admin.save();
17
vijay kumar

Mongoose.modelのAPI構造は次のとおりです。

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

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

例:

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

または

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

または

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

スキーマにコレクション名を設定する必要があります。

new Schema({...},{collection: 'userInfo'});
9
James Freund

ここでマングースのメンテナー。 mongoose.model('UserInfo', UserInfo, 'UserInfo');を実行することをお勧めします。mongoose.model()の3番目の引数はコレクション名です。 関連ドキュメントはこちら

9
vkarpov15

回答:

mongoose.model('UserInfo', UserInfo, 'userinfo'); //3rd parameter 'userinfo': as collection name

構文に関する説明の改善:

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

パラメーターの説明:

  • 1番目のパラメーター-名前モデル名
  • 2番目のパラメーター[スキーマ]スキーマ名
  • 3番目のパラメーター[コレクション]コレクション名(オプション、モデル名から誘導)
  • 4番目のパラメーター[skipInit]初期化をスキップするかどうか(デフォルトはfalse)
1
Bijay Pal

あなたのモデル名:userInfo.js

エクスプレスルートファイルまたはapp.js

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/testdb');

その後、userInfo.jsで

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserInfo = new Schema({
 username : String,
 password : String 
});
module.exports = mongoose.model('UserInfo', UserInfo);