2011-12-26 2 views
3

문제점 : 개발자가 몽구스 스키마를 '등록'할 수있는 웹 서비스를 만들고 있습니다. 브라우저에서 JSON 스키마를 생성합니다. , 그러면 내 서버로 AJAX 될 것입니다.향후 사용을 위해 몽구스 스키마/모델 (문서가 아님)을 저장하는 중

제출 된 스키마를 사용하여 새 Mongoose 모델을 만들지 만 서버를 다시 시작하더라도이 스키마가 존재해야합니다.

나는 같은 것을 수행하는 코드가 있습니다

/* schemaObj is what you create a schema with, 
    for example { name: String, id: Number } */ 

registerSchema = function(model_name, schemaObj) { 
    desiredSchema = new Schema(schemaObj); 
    desiredCollection = 'collection_' + model_name; 
    mongoose.model(desiredCollection, desiredSchema, desiredCollection); 
} 

확인을, 그래서 이것은 사용자 정의 스키마를 우리를 위해 모델을 만들었습니다.

이제이 코드를 실행하고 모델을 만든 다음 서버를 다시 시작하면 문서가 저장 될 때만 컬렉션이 만들어지기 때문에 새로운 컬렉션/모델이 존재하지 않을 것입니다. 지금은 문서를 저장하고 싶지 않습니다. (아무 것도 없기 때문에) 컬렉션을 만들면됩니다.

질문 :이 '고정 된'스키마로 컬렉션을 만드는 방법이 있습니다. 그러면 향후에 삽입 될 문서가 엄격하게 스키마를 준수해야합니까? 기본적으로 SQL에서 create table과 같은 것을 찾고 있습니다.

답변

3
  1. Mongo에서 고정 스키마가있는 모음을 만들 수 없습니다. 이것은 명시 적으로 feature입니다.
  2. Mongoose를 사용하기 전에 새 스키마를 등록했다면 콜렉션의 존재 여부와 상관없이 잘 작동합니다.
  3. 몽구스 스키마는 일종의 일종의 강요된 것입니다. 네이티브 드라이버로 내려 가서 물건을 몰래 잠글 수 있습니다. 정말 쉽습니다. Whatever.collection.insert
  4. 당신은 다시 등록하여 스키마 서버를 시작할 때마다 필요
+0

** 4 **는 내가 확인하고 싶은 것입니다. 감사합니다. 그래서 등록 된 스키마를 그들 자신의 데이터베이스에 저장해야 할 것입니다. 문자열 화 된 스키마 + 콜렉션 이름의 별도 콜렉션이 있어야합니다. 새로운 시작에 다시로드하십시오. –

+0

예! 스키마가 동적이지 않더라도 그렇게해야합니다. 베스트! –

0

나는 또한 사용자가 자동으로로드됩니다 자신의 스키마를 만들 수 있습니다 당신, 같은 응용 프로그램에서 일하고 있어요 몽구스. 스키마를 사용하기 전에 Songoose에로드되어 있는지 확인하는 함수를 만들었고로드되지 않은 경우 (예 : 응용 프로그램을 다시 시작한 후)로드합니다.

아직 설명서가 없지만이 구현에서 jslModel.js 파일을 찾을 수 있습니다. function loadMongooseModel을 검색하십시오.