web-dev-qa-db-ja.com

mongooseが常にコレクション名の最後にsを追加するのはなぜですか

たとえば、このコードにより、「datas」というコレクションが作成されます

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

このコードにより、「ユーザー」というコレクションが作成されます

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

ありがとう

102
Bob Ren

マングースはスマートになろうとしています。ただし、必要なものに強制できます。

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

167
aaronheckmann

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);
38
Nishank Singla

Mongoose 5.x以降では、完全に無効にすることができます。

mongoose.pluralize(null);
9
Andrey Hohutkin

3番目の引数として文字列を追加するだけで、コレクションの実際の名前を定義できます。名前をそれぞれdataおよびuserとして保持するように例を拡張します。

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

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

コレクション名を3番目のパラメーターとして追加できます。 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;
1
sebu
_//Mongoose's definition file. NOT your model files
1 const mongoose = require("mongoose");
2 mongoose.pluralize(null);
_

Mongooseファイルにlinemongoose.pluralize(null)を追加すると、コレクション名の複数形化が防止されます。この行をモデルファイルに追加する必要はありません。

見られるように ここ

0
Daniel Segura