如何最好地将数字存储在 google 实时模型中,并获取原子更改事件?

How best to store a number in google realtime model, and get atomic change events?

听起来很简单,但是...

这个数字包含一个枚举类型,应该是自定义实时对象中的一个字段。这是它在自定义对象注册例程中的声明:

MyRTObjectType.prototype.myEnumeratedType =
    gapi.drive.realtime.custom.collaborativeField('myEnumeratedType');

我可以将它作为一个简单的 javascript 数字存储在模型中,并像这样初始化它:

function initializeMyRTObjectType() {
    // other fields here
    this.myEnumeratedType = 0;
}

...但是下面当然不起作用,因为它只是一个数字:

myRTObject.myEnumeratedType.addEventListener(
    gapi.drive.realtime.EventType.OBJECT_CHANGED, self.onTypeChanged);

我可以将事件侦听器添加到整个对象:

myRTObject.addEventListener(
    gapi.drive.realtime.EventType.OBJECT_CHANGED, self.onTypeChanged);

但我只对那个数字的变化感兴趣(如果我对其他变化感兴趣,我不想检查每个字段以查看发生了什么变化) .

假设我将其存储为实时字符串,并像这样对其进行初始化:

function initializeMyRTObjectType() {
    var model = gapi.drive.realtime.custom.getModel(this);
    // other fields here
    this.myEnumeratedType = model.createString();
}

现在我将获得我的更改事件,但它们不一定是原子的,而且我不知道从“100”到“1001”的更改是否仅仅是到“ 101”,所以我是否应该对此做出反应(这个确切的例子可能无效,但想法是存在的......)

所以问题是,有没有一种方法可以知道所有(复合?)更改,insertions/deletions 在字符串字段上是否完整,或者(更好)一种不同的推荐方式来存储数字,并在更改时获得原子通知?

您还会在包含对象上获得一个 VALUE_CHANGED 事件,就像在地图上一样:

myRTObject.addEventListener(gapi.drive.realtime.EventType.VALUE_CHANGED,
  function(event) {
    if (event.property === 'myEnumeratedType') {
      // business logic
    }
  });