와이즈 비즈 만 갖고 싶습니다
MongoDB에 컬렉션이 있지만
versioneditems
를 모두 등록해야합니다.
모델과
VersionedItem
ItemPatch
를 만들어야하기 때문에 모델
ItemPatch
를 채우기 위해 es
.
별도의
VersionedItem
는 없습니다
문서 (
ItemPatch
에 포함되어 있음)
). MongoDB에서 추가 컬렉션이 생성된다는 사실을 제외하고 아래 코드는 작동합니다.
src/models/versionedItemFactory.js
VersionedItem
src/models/itemPatchFactory.js
const VersionedItemSchema = require('../schemas/VersionedItem');
module.exports = (db) => {
var VersionedItemModel = db.model('VersionedItem', VersionedItemSchema);
return VersionedItemModel;
};
src/schemas/util/asPatch.js
const ItemPatchSchema = require('../schemas/ItemPatch');
module.exports = (db) => {
var ItemPatchModel = db.model('ItemPatch', ItemPatchSchema);
return ItemPatchModel;
};
src/schemas/Item.js
var mongoose = require('mongoose');
module.exports = function _asPatch(schema) {
return new mongoose.Schema({
createdAt: { type: Date, default: Date.now },
jsonPatch: {
op: { type: String, default: 'add' },
path: { type: String, default: '' },
value: { type: schema }
}
});
};
src/schemas/ItemPatch.js
var mongoose = require('mongoose');
module.exports = new mongoose.Schema({
title: { type: String, index: true },
content: { type: String },
type: { type: String, default: 'txt' }
}, { _id: false });
src/schemas/VersionedItem.js
var asPatch = require('./util/asPatch');
var ItemSchema = require('./Item');
module.exports = asPatch(ItemSchema);
그런 다음 등록 :
var mongoose = require('mongoose');
var ItemPatchSchema = require('./ItemPatch');
module.exports = new mongoose.Schema({
createdAt: { type: Date, default: Date.now },
patches: [
{
createdAt: { type: Date, default: Date.now },
jsonPatch: { type: ItemPatchSchema }
}
]
});
<시간>
db.once('open', function() {
require('./models/itemPatchFactory')(db);
require('./models/versionedItemFactory')(db);
});
를 등록해야합니다
ItemPatch
를 통한 모델
버전이 지정된 항목을 다음과 같이 채울 수 있기를 원합니다.
itemPatchFactory
이것은 2 개의 패치로 버전이 지정된 아이템을 성공적으로 생성하지만 (빈)
var itemPatch = new db.models.ItemPatch({
jsonPatch: {
op: 'add',
path: '',
value: {
title: 'This is a title',
content: 'This is content',
type: 'txt'
}
}
});
var itemPatch2 = new db.models.ItemPatch({
jsonPatch: {
value: {
title: 'This is a title 2',
content: 'This is content 2'
}
}
});
var versionedSomething = new db.models.VersionedItem();
versionedSomething.patches.push(itemPatch);
versionedSomething.patches.push(itemPatch2);
versionedSomething.save(function (err, result) {
if (err) throw err;
console.log('result:', result);
});
컬렉션은 MongoDB에서 생성되며이를 피하고 싶습니다.
itempatches
-
답변 # 1
관련 자료
- node.js - 코드 단순화를위한 Schema Mongoose (Node JS) 모델 생성
- mongodb - Nodejs와 Mongoose에서 모델 이름 대신 변수를 어떻게 사용할 수 있습니까?
- python - 모델 인스턴스를 만드는 동안 django의 TypeError
- python - Django Admin 모델은 업데이트 대신 새 인스턴스를 만듭니다
- node.js - mongoose, default_language - 'none'으로 텍스트 인덱스를 만들 수 없습니다
- reactjs - 무한 리 렌더를 생성하지 않고 ESLint를 철저히 해결
- php - Ajax를 계속 사용하지 않고 채팅 애플리케이션을 만들기위한 솔루션
- javascript - git없이 반응 앱을 만드는 방법 (git 건너 뛰기)?
- javascript - attachShadow없이 사용자 지정 요소를 만드는 방법은 무엇입니까?
- javascript - 디스크에 저장하지 않고 파일 생성 및 전송
- Typescript에서 모델 만들기, Timestamp 가져 오기 방법 Firebase
- tensorflow - 다크 넷/토치없이 감지를 위해 사전 훈련 된 가중치 생성
- python - 봇으로 등록하지 않고 Discord 봇을 만드는 방법은 무엇입니까?
- android - flutter에서 DRY없이 switchListTile 생성 시도
- tensorflow - 입력 값의 두 배를 출력하는 간단한 모델을 만드는 방법은 무엇입니까?
- ubuntu18.04 - 새 파일을 만드는 것이 왜 쉽지 않습니까? 터미널없이 txt를 열 수 있습니까?
- php - laravel 모델 생성 이벤트에서 레코드 생성을 방지하는 방법
- uwp - 전용 웹 사이트를 만들지 않고 내 앱에 대한 개인 정책을 제공하려면 어떻게해야합니까?
- PHP를 사용하고 관리자 패널을 사용하거나 HTML 파일을 만들지 않고 WordPress에서 페이지를 만드는 방법은 무엇입니까?
- security - ssl 인증서 및 powershell을 통해 https 바인딩을 만들 때"iis - 해당 파일이 이미있는 경우 파일을 만들 수 없습니다 exceptionmessage"
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- vue.js - axios를 사용하여 서버에 이미지를 업로드하는 방법
- python - 문자열에서 특정 문자 제거
Model
를 만들 수 없습니다 해당 컬렉션이 없지만 실제로 원하는 것을 수행하기 위해 필요한 것은 아니라고 생각합니다.자식을위한 자바 스크립트 객체를 만들어서 부모 컬렉션으로 푸시하면됩니다. 몽구스 문서 (https://mongoosejs.com/docs/subdocs.html)에서이 스 니펫을 참조하십시오.
Schema
를 만들 수 있습니다 그러나 하위 문서의 경우 그러면부모컬렉션에서 읽거나 쓸 때 구조를 적용 할 수 있습니다.