복붙노트

[MONGODB] 왜 몽구스는 항상 내 컬렉션 이름의 마지막에 S를 추가 않습니다

MONGODB

왜 몽구스는 항상 내 컬렉션 이름의 마지막에 S를 추가 않습니다

예를 들어, 컬렉션에서이 코드의 결과 생성되는 "datas를"라는

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

그리고 "사용자"라는 컬렉션에서이 코드의 결과가 생성되는

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

감사

해결법

  1. ==============================

    1.몽구스는 현명하게 노력하고있다. 당신은 그러나 당신이 원하는 무엇이든 할 강제 할 수 있습니다

    몽구스는 현명하게 노력하고있다. 당신은 그러나 당신이 원하는 무엇이든 할 강제 할 수 있습니다

    VAR dataSchema 새로운 스키마 = ({...}을 {컬렉션 '데이터'})

  2. ==============================

    2.mongoose.model의 API 구조는 이것이다 :

    mongoose.model의 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);
    
  3. ==============================

    3.당신이 그것을 완전히 비활성화 할 수 있습니다 5.x를 몽구스 시작 :

    당신이 그것을 완전히 비활성화 할 수 있습니다 5.x를 몽구스 시작 :

    mongoose.pluralize(null);
    
  4. ==============================

    4.당신은 단순히 수집을 위해 실제 이름을 정의하는 세 번째 인수로 문자열을 추가 할 수 있습니다. 각각의 데이터 및 사용자로 킵 이름으로, 귀하의 예를 확장 :

    당신은 단순히 수집을 위해 실제 이름을 정의하는 세 번째 인수로 문자열을 추가 할 수 있습니다. 각각의 데이터 및 사용자로 킵 이름으로, 귀하의 예를 확장 :

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

    5.당신은 세 번째 매개 변수로 컬렉션 이름을 추가 할 수 있습니다. 타이프 스크립트를 사용하여 예제를 참조하십시오 :

    당신은 세 번째 매개 변수로 컬렉션 이름을 추가 할 수 있습니다. 타이프 스크립트를 사용하여 예제를 참조하십시오 :

    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;
    
  6. ==============================

    6.

    //Mongoose's definition file. NOT your model files
    1 const mongoose = require("mongoose");
    2 mongoose.pluralize(null);
    

    당신의 몽구스 파일에 linemongoose.pluralize (널)를 추가하면 컬렉션 이름의 복수화를 방지 할 수 있습니다. 당신은 당신의 모델 파일에이 줄을 추가 할 필요가 없습니다.

    여기에 본.

  7. from https://stackoverflow.com/questions/10547118/why-does-mongoose-always-add-an-s-to-the-end-of-my-collection-name by cc-by-sa and MIT license