반응형
Sequelize.sync(), 특히 강제 옵션은 어떻게 작동합니까?
Sequelize.sync()의 강제 옵션은 무엇을 합니까?
sequelize.sync({
force: true
});
특히, 나는 어떤 힘을 알고 싶습니다: false가 무엇을 합니까? 스키마를 데이터베이스와 동기화하지 않습니까?
후속작에 대한 공식 문서가 있습니까? 문서 내에서만 예제를 찾을 수 있었습니다.
(다소) 공식 문서 및 API 참조는 http://sequelize.readthedocs.org/en/latest/api/sequelize/#sync 에서 찾을 수 있습니다 .
귀하의 질문에 : 테이블을 생성하기 전에 force: true
추가 DROP TABLE IF EXISTS
합니다. 강제로 수행하면 기존 테이블을 덮어씁니다.
OP는 force: false
내가 알고 싶었던 것이 무엇인지 묻고 있었기 때문에 나머지는 여기에 있습니다.
저에게 있어 가장 중요한 점은 개별 필드가 동기화되지 않는다는 것입니다(이는 Waterline ORM에서 가져온 것입니다). 당신이있는 경우에 의미, force: false
그리고 테이블이 존재, 당신이 가진 모든 필드 추가 / 수정 / 삭제가 실행되지 않습니다.
beforeSync
후크가 실행됩니다- 다음과 같은 경우 테이블이 삭제됩니다.
force: true
- 로 테이블이 생성됩니다.
if not exists
- 필요한 경우 인덱스가 추가됩니다.
afterSync
후크가 실행됩니다
참고로 github repo 의 현재 코드는 다음과 같습니다 .
lib.model.js
Model.prototype.sync = function(options) {
options = options || {};
options.hooks = options.hooks === undefined ? true : !!options.hooks;
options = Utils._.extend({}, this.options, options);
var self = this
, attributes = this.tableAttributes;
return Promise.try(function () {
if (options.hooks) {
return self.runHooks('beforeSync', options);
}
}).then(function () {
if (options.force) {
return self.drop(options);
}
}).then(function () {
return self.QueryInterface.createTable(self.getTableName(options), attributes, options, self);
}).then(function () {
return self.QueryInterface.showIndex(self.getTableName(options), options);
}).then(function (indexes) {
// Assign an auto-generated name to indexes which are not named by the user
self.options.indexes = self.QueryInterface.nameIndexes(self.options.indexes, self.tableName);
indexes = _.filter(self.options.indexes, function (item1) {
return !_.some(indexes, function (item2) {
return item1.name === item2.name;
});
});
return Promise.map(indexes, function (index) {
return self.QueryInterface.addIndex(self.getTableName(options), _.assign({logging: options.logging, benchmark: options.benchmark}, index), self.tableName);
});
}).then(function () {
if (options.hooks) {
return self.runHooks('afterSync', options);
}
}).return(this);
};
ReferenceURL : https://stackoverflow.com/questions/21066755/how-does-sequelize-sync-work-specifically-the-force-option
반응형
'IT이야기' 카테고리의 다른 글
Python 하위 프로세스의 표준 입력 (0) | 2021.10.26 |
---|---|
로그 눈금으로 눈금 설정 (0) | 2021.10.25 |
이들go get과 go install의 차이점 (0) | 2021.10.25 |
반응 수명 주기 방법 이해 (0) | 2021.10.25 |
Tensorflow는 레이블이 있는 이미지를 읽습니다. (0) | 2021.10.25 |