0

JayData と SQL Lite Provider を使用してデータを追加または保存するとき (電話ギャップ)。次のエラーが表示されます。

DefaultError: デフォルトのエラー コールバック!

例外データ: Arguments[1] 0: SQLError コード: 0 メッセージ: 「ステートメント コールバックが例外を発生させたか、ステートメント エラー コールバックが false を返さなかった」 proto : SQLError ...... 長さ: 1 proto : オブジェクト get スタック: 関数() { [ネイティブ コード] } メッセージ: "DEFAULT ERROR CALLBACK!" name: "DefaultError" set stack: function () { [ネイティブ コード] } proto : Object jaydata.min.js:53 Guard.raise jaydata.min.js:53 Uncaught DefaultError: DEFAULT ERROR CALLBACK!

ただし、レコードは正常に追加/更新されます。何が問題なのかわからない...何かアイデアはありますか?

コードは次のとおりです。

//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();
                                }
                            });  
                        }
4

2 に答える 2

0

新しいレコードを追加する場合に備えて、ID が設定されていないために問題が発生しているようです。これを修正するのは簡単です:

if (result.length == 0) {
  taskToUpdate.Id = task.Id;
  $org.context.Task.add(taskToUpdate);
}
于 2013-10-25T17:27:54.017 に答える