2016-06-14 3 views
0

안녕하십니까, 저는 모두 mysql 데이터베이스의 특정 테이블 모델을 사용하고 있습니다. SailsJS 응용 프로그램에서 2 개의 다른 데이터베이스를 사용하고 있습니다. 두 데이터베이스 중 하나가 SailsJS 응용 프로그램보다 먼저 생성되었으므로이 데이터베이스의 테이블에는 config/models.js에 구성된 기본 특성이 없습니다. 예를 들어 열을 놓치기 때문에 이전 데이터베이스를 사용하는 모델에서 find() 함수를 호출하려고하면 오류가 발생합니다. 그래서 특정 모델에 대한 설정/models.js에서 구성된 기본 속성을 무시하는 것이 가능하고, 내가 이전 데이터베이스 컬럼에 기본 속성을 추가하지 않으1 개의 특정 모델에 대한 SailsJS의 기본 모델 속성을 무시하십시오.

: ER_BAD_FIELD_ERROR: Unknown column 'tbl_user.deleted' in 'field list'

: 다음과 같은 오류가 보이십니까?

+0

매우 흥미로운 usecase이며 마이그레이션 프로젝트 중에도 매우 유용하다는 것을 알 수 있습니다. 나는 과거의 프로젝트들과 수선을위한 문서들을 살펴 봤는데 나는 혼란 스럽다. 내가 생각할 수있는 유일한 방법은 모델 집합 schemaless : "schema : false"를 실행하는 것입니다. 여기에있는 설명서를 참조하십시오. https://github.com/balderdashy/waterline-docs/blob/master/models/configuration.md #schema – munkee

+0

@munkee 시간 내 주셔서 감사합니다. 제 질문을 보겠습니다.하지만 불행히도 문제가 해결되지 않았습니다. 방금 몇 가지 시도하고 해결책을 찾았습니다. 내 대답을 보라. – Jordi

답변

0

몇 가지 시도를 한 후 다음 해결책을 찾았습니다. 기본 특성을 모델에 추가하기 만하면되지만 함수로 추가하십시오.

module.exports = { 
connection: connection, 
migrate: 'safe', 
tableName: 'tbl_name', 
autoCreatedAt: false, 
autoUpdatedAt: false, 
autoPK: false, 
schema: true, 

attributes: { 
    id: { 
     columnName: 'id', 
     type: 'string', 
     primaryKey: true 
    }, 
    name: { 
     columnName: 'name', 
     type: 'string' 
    }, 
    email: { 
     columnName: 'email', 
     type: 'string' 
    }, 
    deleted: function(){ 
     var obj = this.toObject(); 
     delete obj.deleted; 
     return obj; 

    }, 

    createdBy: function(){ 
     var obj = this.toObject(); 
     delete obj.createdBy; 
     return obj; 

    } 
} 
}; 

이 예에서 삭제 된 속성 및 createdBy는 config/models.js의 기본 속성입니다. 특정 모델에서이 속성의 기능을 만들었습니다. 이 함수에서이 속성을 삭제하고 삭제 된 속성없이 객체를 반환합니다.

관련 문제