[node.js] 몽구스는 왜 항상 내 컬렉션 이름 끝에 s를 추가합니까?

예를 들어,이 코드는 “datas”라는 컬렉션을 생성합니다.

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

그리고이 코드는 “users”라는 컬렉션을 생성합니다.

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

감사



답변

몽구스는 컬렉션 이름을 복수로 만들어 똑똑해 지려고합니다. 그러나 원하는대로 강제 할 수 있습니다.

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


답변

mongoose.model의 API 구조는 다음과 같습니다.

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

mongoose는 컬렉션 인수가 전달되지 않으면 Mongoose는 모델 이름을 복수화하여 컬렉션 이름을 생성합니다. 이 동작이 마음에 들지 않으면 컬렉션 이름을 전달하거나 스키마 컬렉션 이름 옵션을 설정하십시오.

예:

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

또는

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

또는

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


답변

mongoose 5.x부터 완전히 비활성화 할 수 있습니다.

mongoose.pluralize(null);


답변

세 번째 인수로 문자열을 추가하여 컬렉션의 실제 이름을 정의 할 수 있습니다. 같은 이름을 유지하기 위해, 귀하의 예를 확장 data하고 user각각 :

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

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


답변

컬렉션 이름을 세 번째 매개 변수로 추가 할 수 있습니다. 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;


답변

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

mongoose.pluralize(null)Mongoose 파일에 줄 을 추가하면 컬렉션 이름이 복수화되지 않습니다. 이 줄을 모델 파일에 추가 할 필요가 없습니다.

여기에서 볼 수 있습니다 .


답변

다음 줄에서 스키마 정의가 끝날 때이 코드 사용

module.exports = mongoose.model("State", "StateSchema", "state")

상태가 상태로 s를 피하기 위해 db에서 사용하려는 상태라고 가정합니다.

사진을 제대로 보려면 링크를 클릭하십시오.