Data API v4 でコンテンツデータを更新するときにハマった(管理画面)

MT 7 の管理画面で下記のように実行して、 取扱店舗 というコンテンツデータフィールドの関連付けを削除したり変更したりしたかったのですが、どうにもコンテンツデータが更新できませんでした。

mtappVars.DataAPI.getToken(function () {
  mtappVars.DataAPI.getContentData(31, 3, 3, function (cd) {
    for (let i = 0; i < cd.data.length; i++) {
      if (cd.data[i].label === "取扱店舗") {
        cd.data[i].data = [];
      }
    }
    mtappVars.DataAPI.updateContentData(31, 3, 3, cd, function (newCd) {
      console.warn(newCd);
    });
  });
});

ここで、POST されたデータを見てみると、、、

content_data: {"author":{"displayName":"tinybeans","id":"1","userpicUrl":null},"basename":"06bed0e01cb73fa5040e2e726f03de7335617791","blog":{"id":"31"},"createdDate":"2018-10-26T11:14:03 09:00","data":"[{\"data\":[],\"id\":\"41\"}]","date":"2018-10-19T06:51:14 09:00","id":3,"label":"桜並木を自宅で楽しめる歴史ある建築物件","modifiedDate":"2018-11-09T02:04:40 09:00","status":"Publish","unpublishedDate":null,"updatable":true}

更新したい部分だけ、 "data":"[{\"data\":[],\"id\":\"41\"}]" のように値がオブジェクト全体が文字列になっていました。 そこで、下記のようにすべて文字列にしてから送信したら成功しました。

mtappVars.DataAPI.getToken(function () {
  mtappVars.DataAPI.getContentData(31, 3, 3, function (cd) {
    for (let i = 0; i < cd.data.length; i++) {
      if (cd.data[i].label === "取扱店舗") {
        cd.data[i].data = [];
      }
    }
    const param = Object.toJSON(cd);
    mtappVars.DataAPI.updateContentData(31, 3, 3, param, function (newCd) {
      console.warn(newCd);
    });
  });
});

結構な時間ハマったので、共有しておきます。

以上です。

  • このエントリーをはてなブックマークに追加
Just a second...