[mongodb] Mongoose를 스키마를 정의하지 않고 어떻게 사용합니까?


1 Answers

실제로 "혼합 된"( Schema.Types.Mixed ) 모드는 Mongoose에서 정확하게 수행됩니다 ...

그것은 스키마가없는 자유 형식의 JS 객체 를 받아들입니다. 나중에 수동으로 해당 객체에 저장을 트리거해야하지만 공정한 절충과 같아 보입니다.

혼합

"anything goes"SchemaType은 유연성을 유지하는 것이 어렵다는 단점을 가지고 있습니다. 혼합은 Schema.Types.Mixed 또는 빈 객체 리터럴을 전달하여 사용할 수 있습니다. 다음은 동일합니다.

var Any = new Schema({ any: {} });
var Any = new Schema({ any: Schema.Types.Mixed });

스키마가없는 유형이므로 원하는 값으로 값을 변경할 수 있지만 몽구스는 이러한 변경 사항을 자동으로 감지하고 저장하는 기능을 잃어 버립니다. Mongoose에 혼합 유형의 값이 변경 .markModified(path) 것을 .markModified(path) 려면 방금 변경 한 혼합 유형으로 경로를 전달하는 .markModified(path) 메소드를 호출하십시오.

person.anything = { x: [3, 4, { y: "changed" }] };
person.markModified('anything');
person.save(); // anything will now get saved
Question

Mongoose의 이전 버전 (node.js 용)에는 스키마를 정의하지 않고 사용할 수있는 옵션이있었습니다

var collection = mongoose.noSchema(db, "User");

그러나 현재 버전에서는 "noSchema"기능이 제거되었습니다. 내 스키마가 자주 변경 될 수 있으며 실제로 정의 된 스키마에 맞지 않으므로 몽구스에서 스키마가없는 모델을 사용하는 새로운 방법이 있습니까?






Related