나는 많은 의견을 남기기 시작했고 대답을 대신하기로 결정했다. 'queryRunner'를 사용하는 경우 공유 하나의 정의 queryFailed 방법이있다
var thisQuery = breeze.entityQuery.from('Whatever').where('pwkad', '==', 'awesome');
queryRunner(thisQuery);
function queryRunner(query) {
query.execute().fail(queryFailed);
};
function queryFailed(error) {
console.log(error.message);
};
- 당신은 항상 필요한 코드를 줄이고 재사용 성을 향상시키기 위해이 작업을 수행 할 수 있습니다. 그런 다음 유형에 대해 알 수없는 재사용 가능한 코드를 모두 넣을 수 있습니다. 추가 단계를 진행하기 위해 다른 모든 쿼리가 '상속 (inherit)'(나는 느슨하게 사용함)이라는 쿼리를 작성하여 쿼리를 빌드하고 단일 코드베이스 만 유지하는 매개 변수를 사용하는 위치로 만들 수 있습니다. 프런트 엔드 및 API 코드 모두에 대한 규칙을 따르도록 강요하므로이 작업을 수행하는 것이 좋습니다 (모든 Breeze.js 프로덕션 응용 프로그램에서 사용).
// All is pseudo code
function getEntityById (manager, type, resourcePath, forceRemote, idProp, idValue, params) {
if (!manager) { throw "Must pass in a manager"; }
var query = breeze.entityQuery.from(resourcePath).toType(type);
if (!forceRemote) {
// Put your code here to get from cache
var entity = breeze.fetchEntityByKey();
if (entity) {
return entity;
}
}
if (params) {
// Pass in a valid params object and set it to whatever
query.withParameters(params);
}
if (idValue && idProp) {
query.where(idProp, '==', idValue);
}
query.execute().fail(queryFailed);
function queryFailed(error) {
console.log(error);
}
}
어디에서 호출 할 수있는 ID로 엔티티를 '수'필요 - -
나는이 나를 위해 보이지만 여기에 빠른 예입니다 정확히 어떻게 내 비밀 소스를 포기하지 않습니다
var manager = new breeze.entityManager();
var hamburger = getEntityById(manager, 'Hamburger', 'Hamburgers', true, 'id', 1);
이 방법을 사용하면 하나의 단일 브리즈 쿼리를 작성하고 시간이 많이 걸리는 곳에서 호출 할 수 있으며 매개 변수를 올바르게 제공하면 디버깅이 가능합니다.
당신 항상 당신이 유형의 불가지론의 모든 일반 전화로 그룹화하는 경우 다른 메소드 이럴 실패하지만, 다른 사람을 위해해야 논리를 실패 저장하여 쿼리는 동일한 호출을 거쳐 쿼리 로직 코드와 실패 로직을 모두 줄일 수 있습니다. –
이 작업을 더 자세히 설명하기 위해 기본 함수를 사용하여 쿼리를 생성 한 다음 오류 로직이있는 위치로 확장합니다 그것이 한 번 정의 된 것이다. 새로운 바람을 느낄 때가 더 편리 할 수도 있습니다. –