google-drive-api - 如何通过 Realtime API 构建和使用协作数据模型?

标签 google-drive-api google-drive-realtime-api

我已尝试按照 Build a Collaborative Data Model 中描述的步骤进行操作我最终得到以下代码:

function onLoad(doc){
  var Book = function(){};

  var model = doc.getModel();
  gapi.drive.realtime.custom.registerType(Book, 'Book');
  Book.prototype.title = gapi.drive.realtime.custom.collaborativeField('title');
  Book.prototype.author = gapi.drive.realtime.custom.collaborativeField('author');
  Book.prototype.isbn = gapi.drive.realtime.custom.collaborativeField('isbn');
  Book.prototype.isCheckedOut = gapi.drive.realtime.custom.collaborativeField('isCheckedOut');
  Book.prototype.reviews = gapi.drive.realtime.custom.collaborativeField('reviews');
  var book = model.create('Book');
  model.getRoot().set('book', book);
  book.addEventListener(gapi.drive.realtime.EventType.OBJECT_CHANGED, function(e){console.log(e);});
  book.title = 'Moby Dick';
  book.author = 'Melville, Herman';
  book.isbn = '978-1470178192';
  book.isCheckedOut = false;
}

不幸的是,执行此操作时,在执行 var book = model.create('Book'); 时出现以下错误:

Uncaught java.lang.IllegalArgumentException: Unknown type name Book

Drive Realtime API Error: invalid_compound_operation: Open compound operation at end of synchronous block - did you forget to call endCompoundOperation()?

我错过了什么?

最佳答案

您需要在加载文档之前注册自定义类型。

这里有您想要的三个不同部分:

  • 加载之前:注册自定义类型。
  • 在初始化时:每个文档只发生一次。在这里,您想要初始化每个文档都应具有的数据模型。
  • 文件加载时:每次加载都会发生一次。这是您要设置事件监听器等的地方。

将您的函数分成这三个部分,它应该可以工作。

关于google-drive-api - 如何通过 Realtime API 构建和使用协作数据模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16178447/

相关文章:

google-sheets - 是否可以使用公式和云端硬盘文件路径将图像插入 Google Sheets 电子表格中?

android - 使用 Android SDK 将 CSV 文件上传为 Google 表格

python - google drive sdk quickstart python示例错误

FFMPEG 使用 Google Drive API 而不是共享 URL

javascript - 如何让匿名用户编辑 Google Drive Realtime 文档?

javascript - 使用 google drive appDataFolder 在客户端使用 javascript 存储应用程序状态

python - 使用 Google Drive API 将 PDF 转换为任何格式

javascript - 从 Drive 打开文件时不调用 Onfileloaded 事件

google-api - Google Drive Realtime API OAuth2 刷新错误