2013-10-15 2 views
0

JayData 및 SQL Lite Provider (전화 간격)를 사용하여 데이터를 추가하거나 저장할 때. 다음과 같은 오류가 발생합니다.DEFAULT ERROR JayData에서 전화 받기

DefaultError : DEFAULT ERROR CALLBACK!

예외 데이터 : 인수 [1] 0 :있는 SQLError 코드 : 0 메시지 : "문 콜백 예외 또는 문 오류 콜백 false를 반환하지 않았습니다 제기" 프로토 :있는 SQLError .... .. 길이 : 1 프로토 : 개체 스택 : function() {[native code]} 메시지 : "DEFAULT ERROR CALLBACK!" 이름 "DefaultError" 설정 스택 : 함수() {[네이티브 코드]} 프로토 : 개체 jaydata.min.js 53 Guard.raise의 jaydata.min.js 53 catch되지 DefaultError : DEFAULT ERROR 콜백!

그러나 레코드가 추가/업데이트되었습니다. 그 문제가 ... 어떤 생각인지 몰라요?

코드는 다음과 같습니다

//Entities: 
var Task = $data.Entity.extend("$org.types.Task", { 
    Id: { type: "int", key: true }, 
    TaskType: { type: String, required: false }, 
    StatusId: { type: "int", required: false }, 
    DateScheduled: { type: Date, required: false }, 
    TimeSlot: { type: String, required: false }, 
    LastUpdated: { type: Date,required: false }, 
    TaskName: { type: String, required: false },  
    SpecialInstructions: { type: String}, 
    PropertyAddress: { type: String, required: false }, 
    PropertyPostCode: { type: String, required: false }, 
    PropertyType: { type: String, required: false }, 
    NumberOfBedrooms: { type: "int", required: false }, 
    HasGarage: { type: Boolean, required: false }, 
    HasOutHouse: { type: Boolean, required: false }, 
    IsReadyForReportGeneration: {type: Boolean}, 
    TaskStatus: {type: String}, 
    DateOfTaskDisplayName: {type: String} 
}); 

//inside a look etc: 

taskToUpdate.TaskType = task.TaskType; 
         taskToUpdate.StatusId = task.TaskStatusId; 
         taskToUpdate.TaskStatus = task.TaskStatus; 
         taskToUpdate.DateScheduled = task.Date; 
         taskToUpdate.TimeSlot = task.Time; 
         taskToUpdate.LastUpdated = new Date(); 
         taskToUpdate.TaskName = "Job " + task.TaskId + " " + task.TaskType + " @" + task.AddressOfTask + ", " + task.PropertyPostCode; 
         taskToUpdate.SpecialInstructions = specialInstructions; 
         taskToUpdate.PropertyAddress = task.AddressOfTask; 
         taskToUpdate.PropertyPostCode = task.PropertyPostCode; 
         taskToUpdate.PropertyType = task.PropertyType; 
         taskToUpdate.NumberOfBedrooms = task.NumberOfBedrooms; 
         taskToUpdate.HasGarage = task.HasGarage; 
         taskToUpdate.HasOutHouse = task.HasOutHouse; 
         taskToUpdate.DateOfTaskDisplayName = task.DateOfTaskDisplayName, 
         taskToUpdate.IsReadyForReportGeneration = task.ReportReady; 

         if (result.length == 0) { 
          $org.context.Task.add(taskToUpdate); 
         } 

         rowsProcessed++; 

         if (rowsProcessed == rowsToProcess) { 
          $org.context.saveChanges({ 
           success: function(db) { 
            viewModel.messages.push({message:"Tasks saved to local device."}); 
            showNotificationInfo("Tasks saved to local device."); 
            hideLoader(); 
           }, error: function(err) { 
            console.log(err); 
            viewModel.messages.push({message:"Errors saving tasks: " + err}); 
            showNotificationError("Errors saving tasks: " + err); 
            hideLoader(); 
           } 
          }); 
         } 
+0

가 어떻게 taskToUpdate를 인스턴스화 할을 확인했다어요? –

+0

attachOrGet ... 재미있는 점은 일부 테이블 정의를 변경하기 전까지는 잘 작동하는 것입니다. dropAllTables 옵션을 사용하여 모델 변경시 문제가 있는지 확인해 보았습니다. –

+0

계산 추가 = ID는 고유 한 값을 갖는 데 도움이됩니다. 이것이 행동을 바꾸나요? – Robesz

답변

0

권리는 내가하는 방법 --logInfo() 너무 context.savechanges를 호출했다 (메시지)를 호출했다. 그것은 오류의 원인이 된 로그 생성 메시지와 함께이를 호출하여

는 ... 그러나 모든 데이터가

나 '... 그래서 난 아직도 정말 무슨 일이 있었는지 좀 확실 해요 확인 저장된 지금 ... SaveChanges를()가 모든 작업을 완료 한 후에 만 ​​전화를 한 번만 호출되는 사람들을 돕는

감사합니다 ...

0

문제는 당신이 새 레코드를 추가 할 경우 어떤 아이디가 설정되어 있지 않기 때문에 발생하는 것 같습니다. 이에 대한 수정은 간단합니다 : 그것은 밝혀졌다

if (result.length == 0) { 
    taskToUpdate.Id = task.Id; 
    $org.context.Task.add(taskToUpdate); 
} 
+0

죄송합니다. 다음 코드 줄을 넣어야합니다. var taskToUpdate = $ org.context.Task.attachOrGet ({Id : task.TaskId}); –