Не удается получить все записи из Cloudkit Cloud (JS)

У меня есть HTML-таблица, которую я хочу заполнить значениями, хранящимися в Cloudkit Dashboard.

Я успешно извлек записи и заполнил их своими таблицами, и проблема, которую я замечаю, состоит в том, что, если я дам это некоторое время и попытаюсь перезагрузить таблицу, некоторые записи не будут восстановлены. Я не изменил ни один из моих кодов за это время, поэтому я очень озадачен тем, как / почему это происходит. Ниже приведен пример моего кода и журнала ошибок:

public-query.js:

records.forEach(function(record) {  
var fields = record.fields;  
var tableActual = "<tr><td>" + record['created'].timestamp + "</td><td>" + fields['placeName'].value + </td></tr>  
                    document.write(tableActual)  

ЖУРНАЛ ОШИБОК:

Uncaught (in promise) TypeError: Cannot read property 'timestamp' of  undefined
at public-query.js:49:73
at Array.forEach (native)
at public-query.js:47:29

Если я удалю, например, <td>" + record['created'].timestamp + "</td> тогда журнал ошибок скажет следующее <td> не определено

Чтобы было ясно, в настоящее время есть запись, которая извлекается с его отметкой времени правильно, и были другие записи, которые были извлечены, а теперь нет, без изменений в коде.

Я получал эту ошибку в разное время в разных частях строки 3 (в реальном коде есть 16 полей /<td>) хотя я знаю, что эти поля заполнены в записи, а также извлекли записи с этими полями без заполнения.

Есть идеи, что здесь происходит? Это ошибка в Cloudkit или я что-то не так делаю?

1 ответ

Если вы посмотрите раздел "Обсуждение" в нижней части Справочника по запросам веб-служб CloudKit, вы увидите:

Индексы обновляются асинхронно, поэтому они не гарантируют актуальность.

Возможно, что некоторые записи, возвращенные в вашем запросе, будут помечены как удаленные и не будут содержать их полей, поэтому вам нужно проверить это, прежде чем предполагать, что поля существуют, и получить к ним доступ. Вот пример ответа, который вы можете увидеть:

{
    "records": [{
        "recordName": "195055b3-1db7-4d75-86f0-d9aef8d8381b",
        "deleted": true
    }, {
        "recordName": "712525a8-eccf-4da7-b2d9-981f120bcc82",
        "deleted": true
    }],
    "total": 2
}

Если вы проверите для этих атрибутов удаленный атрибут, то можете игнорировать их при обработке или рендеринге данных.

Другие вопросы по тегам