Попытка хранить indexReferences для каждого пользователя, я обнаружил, что когда я храню один (или несколько) непосредственно на карте, он отлично работает. Однако при хранении в объекте (или пользовательском объекте реального времени) API реального времени генерирует ошибки Circular JSON.Ошибка JSON Google в реальном времени, когда indexReference хранится на совместной карте только в том случае, если содержится в объекте
Это прекрасно работает:
function doRegisterTypes() {
gapi.drive.realtime.custom.registerType(MyCustomType, "MyCustomType");
MyCustomType.prototype.startPoints = gapi.drive.realtime.custom.collaborativeField('startPoints');
MyCustomType.prototype.endPoints = gapi.drive.realtime.custom.collaborativeField('endPoints');
MyCustomType.prototype.elements = gapi.drive.realtime.custom.collaborativeField('elements');
gapi.drive.realtime.custom.setInitializer(MyCustomType, initializeMyCustomType);
}
function initializeMyCustomType() {
var model = gapi.drive.realtime.custom.getModel(this);
this.startPoints = model.createMap();
this.endPoints = model.createMap();
this.elements = model.createList();
}
function initializeModel(model) {
var o = model.create("MyCustomType");
o.elements.pushAll(["foo", "bar"]);
var startIndex = o.elements.registerReference(0, false);
var endIndex = o.elements.registerReference(0, false);
o.startPoints.set(UserId, startIndex);
o.endPoints.set(UserId, endIndex);
model.getRoot().set("MyCustomObject", o);
}
Но это не, в противном случае с круговыми ошибки JSON при сохранении объекта диапазона в карте:
function doRegisterTypes() {
gapi.drive.realtime.custom.registerType(MyCustomType, "MyCustomType");
MyCustomType.prototype.ranges = gapi.drive.realtime.custom.collaborativeField('ranges');
MyCustomType.prototype.elements = gapi.drive.realtime.custom.collaborativeField('elements');
gapi.drive.realtime.custom.setInitializer(MyCustomType, initializeMyCustomType);
}
function initializeMyCustomType() {
var model = gapi.drive.realtime.custom.getModel(this);
this.ranges = model.createMap();
this.elements = model.createList();
}
function initializeModel(model) {
var o = model.create("MyCustomType");
o.elements.pushAll(["foo", "bar"]);
var startIndex = o.elements.registerReference(0, false);
var endIndex = o.elements.registerReference(0, false);
// FAILS:
o.ranges.set(UserId, {start:startIndex, end:endIndex});
model.getRoot().set("MyCustomObject", o);
}
Я должен подчеркнуть, появляется ошибка для single indexReference, и является ли объект конкретным нестандартным типом или нет, а также WHENEVER значение установлено на карту: при инициализации модели или позже. Как будто indexReferences нельзя хранить ни на чем, кроме «верхнего уровня», хотя это мало смысла.
Характеристика: Ошибка? Пользовательская скупость?
Можете ли вы разместить точное сообщение об ошибке? что такое o.ranges? –
@Cheryl Simon Я дам вам сообщение об ошибке, но o.ranges - это карта, указанная в процедуре initializeMyCustomType второго примера. – HeyHeyJC
@CherylSimon Вот эта ошибка: Ошибка в функции прослушивателя: TypeError: преобразование круговой структуры в JSON TypeError: преобразование круговой структуры в JSON в Object.stringify (native) ... плюс еще куча. – HeyHeyJC