mongoose는 왜 항상 내 컬렉션 이름 끝에 s를 추가합니까?
예를 들어, 이 코드로 인해 "데이터"라는 컬렉션이 생성됩니다.
var Dataset = mongoose.model('data', dataSchema);
그리고 이 코드에 의해 "사용자"라는 컬렉션이 생성됩니다.
var User = mongoose.model('user', dataSchema);
감사해요.
Mongoose는 당신의 컬렉션 이름을 복수화함으로써 똑똑해지려고 노력하고 있습니다.단, 원하는 대로 강제할 수 있습니다.
var dataSchema = new Schema({..}, { collection: 'data' })
mongoose.model의 API 구조는 다음과 같습니다.
Mongoose#model(name, [schema], [collection], [skipInit])
mongoose가 하는 일은 collection 인수가 전달되지 않았을 때 mongoose가 모델명을 복수화하여 collection명을 작성하는 것입니다.이 동작이 마음에 들지 않으면 컬렉션 이름을 전달하거나 스키마 컬렉션 이름 옵션을 설정하십시오.
예:
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');
//Mongoose's definition file. NOT your model files
1 const mongoose = require("mongoose");
2 mongoose.pluralize(null);
회선 추가mongoose.pluralize(null)
당신의 Mongoose 파일에서 컬렉션 이름의 복수화를 방지할 수 있습니다.모델 파일에 이 줄을 추가할 필요가 없습니다.
여기 보시는 것처럼.
컬렉션 이름을 세 번째 매개 변수로 추가할 수 있습니다.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;
다음 줄의 스키마 정의 끝에 이 코드를 사용합니다.
module.exports = mongoose.model("State", "StateSchema", "state")
상태가 db에서 사용하는 상태라고 가정하고 s as states를 회피합니다.
이 명령을 실행하면 Mongoose가 모델을 컴파일합니다.
var schema = new mongoose.Schema({ name: 'string', size: 'string' });
var child = mongoose.model('child', schema);
첫 번째 인수는 모델이 대상인 컬렉션의 단수 이름입니다.Mongoose는 자동으로 모델명의 소문자 버전을 찾습니다.따라서 위의 예에서 모델 자식은 데이터베이스의 자식 컬렉션에 대한 것입니다.
주의:.model()
함수는 스키마의 복사본을 만듭니다.호출하기 전에 후크를 포함하여 스키마할 모든 항목을 추가했는지 확인하십시오..model()
!
언급URL : https://stackoverflow.com/questions/10547118/why-does-mongoose-always-add-an-s-to-the-end-of-my-collection-name
'programing' 카테고리의 다른 글
재료 UI에서 텍스트 필드의 글꼴 크기를 변경할 수 없습니다. (0) | 2023.03.26 |
---|---|
asp.net mvc에서 요청이 ajax인지 확인하는 방법 (0) | 2023.03.26 |
워드프레스 플러그인의 옵션 페이지에 페이지 번호를 붙이고 싶습니다. (0) | 2023.03.26 |
페이지에서 이동할 때 jQuery ajax 게시 오류를 처리하는 방법 (0) | 2023.03.26 |
각도 JS에 입력할 바인딩 값 (0) | 2023.03.26 |