1

私は、RavenのSQLレプリケーションツールを使用してRaven DBドキュメントをSQLにレプリケートする作業を行っていますが、これまでのところ、いくつかの問題が発生しています。私は今、最も複雑なドキュメントの1つで作業を開始し、複数の列を含むドキュメントで配列を複製するための最良の方法を見つけるのに苦労しています。

複製しようとしているドキュメントは次のようになります。

{
  "CreatedAt": "2013-03-26T15:58:05.5130458",
  "IsMostRecent": true,
  "ClientId": "clients/417",
  "StatusType": "Live",
  "Start": "2013-03-31T00:00:00.0000000",
  "End": null,
  "EndCharge": null,
  "AssessmentDate": null,
  "Correspondence": null,
  "Service": {
  "$type": "xxxx.xxxx.xxxx.xxxx.Personalisation, xxxx.Care.Core",
  "IsDirectBilling": false,
   "Visits": [
      {
         "DayOfWeek": "Monday",
         "Start": "09:00:00",
         "End": "10:15:00",
         "AdditionalResources": true,
         "SocialWork": {
             "Duration": 30,
             "BillableTo": "SocialWork",
             "VisitTasks": [
                "GoingToBed",
                "DressingAssistance",
                "WashingBathingAssistance",
                "AssistWithPersonalGrooming"
          ]
        },
         "PrivateWork": {
             "Duration": 45,
             "BillableTo": "Private",
          "VisitTasks": [
            "SupportWithRehab",
            "FoodPreperation",
            "ShoppingErrandRunning",
            "NonSpecialisedLaundry",
            "CheckVisit",
            "MealsAtHomeService",
            "Escorting"
          ]
        }
  },
  {
    "DayOfWeek": "Wednesday",
    "Start": "09:00:00",
    "End": "10:15:00",
    "AdditionalResources": true,
    "SocialWork": {
      "Duration": 30,
      "BillableTo": "SocialWork",
      "VisitTasks": [
        "GoingToBed",
        "DressingAssistance",
        "WashingBathingAssistance",
        "AssistWithPersonalGrooming"
      ]
    },
    "PrivateWork": {
      "Duration": 45,
      "BillableTo": "Private",
      "VisitTasks": [
        "SupportWithRehab",
        "FoodPreperation",
        "ShoppingErrandRunning",
        "NonSpecialisedLaundry",
        "CheckVisit",
        "MealsAtHomeService",
        "Escorting"
      ]
    }
  },
  {
    "DayOfWeek": "Friday",
    "Start": "09:00:00",
    "End": "10:15:00",
    "AdditionalResources": true,
    "SocialWork": {
      "Duration": 30,
      "BillableTo": "SocialWork",
      "VisitTasks": [
        "GoingToBed",
        "DressingAssistance",
        "WashingBathingAssistance",
        "AssistWithPersonalGrooming"
      ]
    },
    "PrivateWork": {
      "Duration": 45,
      "BillableTo": "Private",
      "VisitTasks": [
        "SupportWithRehab",
        "FoodPreperation",
        "ShoppingErrandRunning",
        "NonSpecialisedLaundry",
        "CheckVisit",
        "MealsAtHomeService",
        "Escorting"
      ]
    }
  }
],
"_visits": [
  {
    "DayOfWeek": "Monday",
    "Start": "09:00:00",
    "End": "10:15:00",
    "AdditionalResources": true,
    "SocialWork": {
      "Duration": 30,
      "BillableTo": "SocialWork",
      "VisitTasks": [
        "GoingToBed",
        "DressingAssistance",
        "WashingBathingAssistance",
        "AssistWithPersonalGrooming"
      ]
    },
    "PrivateWork": {
      "Duration": 45,
      "BillableTo": "Private",
      "VisitTasks": [
        "SupportWithRehab",
        "FoodPreperation",
        "ShoppingErrandRunning",
        "NonSpecialisedLaundry",
        "CheckVisit",
        "MealsAtHomeService",
        "Escorting"
      ]
    }
   },
 }
}

これはこれまでの私のレプリケーションスクリプトです。現在、一部の列がレプリケートされていますが、すべてではありません。

replicateToServiceStatusDetails({
        ClientId: this.ClientId,
        StatusType: this.StatusType,
        Start: this.Start,
        End: this.End,
        EndChargeDate: this.EndChargeDate,
        AssessmentDate: this.AssessmentDate
});

for (var i=0; i<this.Service.length; i++) 
{
    replicateToService( 
    {
           IsDirectBilling: this.IsDirectBilling
    });
}

for (var i=0; i<this.Service.Visits.length; i++) 
{
    replicateToVisits( 
    {
            DayOfWeek: this.Service.Visits.DayOfWeek,
    Start: this.Service.Visits.Start,
    End: this.Service.Visits.End,
    AdditionalResources: this.Service.Visits.AdditionalResources
});
}

for (var i=0; i<this.Service.Visits.SocialWork.length; i++) 
{
    replicateToSocialWork( 
    {
            Duration: this.Service.Visits.SocialWork.Duration,
    BillableTo: this.Service.Visits.SocialWork.BillableTo
    });
}

for (var i=0; i<this.Service.Visits.PrivateWork.length; i++) 
{
    replicateToPrivateWork( 
    {
            Duration: this.Service.Visits.PrivateWork.Duration,
    BillableTo: this.Service.Visits.PrivateWork.BillableTo
    });
}

すべての列を複製する方法に関するいくつかのアイデアを探しています。

4

1 に答える 1

2

for配列を反復処理する場合にのみ必要です。これはおそらくあなたがこれをしたい方法です:

replicateToServiceStatusDetails({
        ClientId: this.ClientId,
        StatusType: this.StatusType,
        Start: this.Start,
        End: this.End,
        EndChargeDate: this.EndChargeDate,
        AssessmentDate: this.AssessmentDate
});

replicateToService( 
{
       IsDirectBilling: this.IsDirectBilling
});

for (var i=0; i<this.Service.Visits.length; i++) 
{
    var visit = this.Service.Visits[i];
    replicateToVisits( 
    {
            DayOfWeek: visit.DayOfWeek,
            Start: visit.Start,
            End: visit.End,
            AdditionalResources: visit.AdditionalResources
    });

    replicateToSocialWork( 
    {
            Duration: visit.SocialWork.Duration,
        BillableTo: visit.SocialWork.BillableTo
    });

    replicateToPrivateWork( 
    {
         Duration: visit.PrivateWork.Duration,
        BillableTo: visit.PrivateWork.BillableTo
    });
}
于 2013-03-26T18:42:03.353 に答える