0

我尝试检测用户驱动器上的更改以更新列表中的内容,但是当我请求更改时,我收到驱动器上的所有条目。

解释我为什么要这样做:当用户打开两个选项卡时,这是一个方便的功能,一个带有 google drive 环境,一个带有使用驱动器的应用程序(无需重新加载应用程序即可查看内容更改在驱动环境中制作)。

我正在遵循此处列出的指南:https ://developers.google.com/drive/v2/reference/changes/list

奇怪的是我需要一个largestChangeId+1,但我怎么知道这个值?我不知道最大的ChangeId 并将其设置为null. 无论我用这个值做什么,我都会得到所有的内容。

我做了以下代码:

o.getCloudFileUpdates = function(fCallback, sFolderId )
{
  var oDefQ = {q:'trashed=false '+(typeof sFolderId == 'string'?('and "'+sFolderId+'" in parents'):''), largestChangeId:null, orderby:'title', maxResults:1000},      
      fGetFiles = function(request, result) 
      {
        request.execute(function(resp) 
        {
            //$d(resp); 
            if( resp.items instanceof Array )   
            {
              result = result.concat(resp.items);
              if( resp.nextPageToken ) 
              { // Get next page and 'break' this function 
                 return fGetFiles(gapi.client.drive.changes.list($j.extend(oDefQ,{'pageToken':resp.nextPageToken})), result); 
              } 
            }

            if( result.length )
            {
              result.sort(function(a,b) 
              {
                if (a.title < b.title)
                 { return -1; }
                if (a.title > b.title)
                 { return 1; }
                return 0;
              });

              fCallback(result);
              return;
            }
            fCallback(false);
        });
      };

  try {
    fGetFiles(gapi.client.drive.changes.list(oDefQ), []);
  } catch(e) { fCallback(false); return false; }
  return true;
};

我如何在不知道的情况下获得最新的更改largestChangeId

4

1 回答 1

1

第一次通话时从零开始。响应中包含当前最大的更改 id,您需要存储并在下一个请求中使用它。在您的代码中,它将具体化为“resp.largestChangeId”。

于 2013-09-04T05:30:13.593 回答