rets-client не может получить фотографию ReplyCode 20403 (NO_OBJECT_FOUND) - PullRequest
0 голосов
/ 10 апреля 2019

Я установил пакет rets-client из npm.

Я запустил другой query и получил meta, который работает нормально, но когда я пытался сделать photo streaming example, я продолжал получать ошибки

Error: RetsReplyError: RETS Server reply while attempting getObject - ReplyCode 20403 (NO_OBJECT_FOUND); ReplyText: No Object Found [260978536:1].

Я следовал коду в примере
https://github.com/sbruno81/rets-client#photo-streaming-example

try {
    rets.getAutoLogoutClient(clientSettings, async (client) => {
        const photoIds = {
            '260978536': '*',    // get all photos for listingId 260978536
        };

        const photoStream = await client.objects.stream.getObjects('Property', 'Photo', photoIds, {
            alwaysGroupObjects: true,
            ObjectData: '*'
        });

        console.log("========================================");
        console.log("========  Photo Stream Results  ========");
        console.log("========================================");
        return new Promise(function (resolve, reject) {
            let i = 0;
            photoStream.objectStream.on('data', function (event) {
                try {
                    if (event.type === 'headerInfo') {
                        console.log('   ~~~~~~~~~ Header Info ~~~~~~~~~');
                        outputFields(event.headerInfo);
                        return
                    }
                    console.log("   -------- Photo " + (i + 1) + " --------");
                    if (event.type === 'error') {
                        console.log("      Error: " + event.error);
                    } else if (event.type === 'dataStream') {
                        outputFields(event.headerInfo);
                        fileStream = fs.createWriteStream(
                            "/tmp/photo_" + event.headerInfo.contentId + "_" + event.headerInfo.objectId + "." + event.headerInfo.contentType.match(/\w+\/(\w+)/i)[1]);
                        event.dataStream.pipe(fileStream);
                    }
                    i++;
                } catch (err) {
                    reject(err);
                }
            });
            photoStream.objectStream.on('error', function (errorInfo) {
                reject(errorInfo);
            });
            photoStream.objectStream.on('end', function () {
                resolve();
            });
        })
    })
} catch (errorInfo) {
    const error = errorInfo.error || errorInfo;
    console.log("   ERROR: issue encountered:");
    outputFields(error);
    console.log('   ' + (error.stack || error).replace(/\n/g, '\n   '));
}

причина, по которой я использовал этот идентификатор фотографии, заключается в том, что когда я делаю запрос, я вижу, что этот идентификатор списка имеет PictureCount из 20, но почему-то он не дает мне найти объект.

образец запроса на возврат для того же идентификатора

{ L_Area: 'Islands-Van. & Gulf',
       L_ListingID: '260978536',
       L_Status: 'Expired',
       L_PictureCount: '20',
       L_Last_Photo_updt: '2015-07-15T04:27:00',
       L_DisplayId: 'V1064230' }

Может кто-нибудь подсказать мне, где я здесь не так делаю? Заранее благодарим за любую помощь и предложения.

P.S. Я также попытался использовать один L_ListingID с L_Status в качестве Active вместо Expired, но результат тот же

Ответы [ 2 ]

1 голос
/ 10 мая 2019

Точек, которые следует учитывать при загрузке изображений с сервера RETS:

  1. Убедитесь, что у вас есть разрешение на доступ к списку изображений.
  2. Во-вторых, убедитесь, что у вас есть доступ к загрузке изображений или только общедоступный доступ к изображениям (ссылка CDN)? Зависит от RETS-сервера. Будет предоставлено одно или оба разрешения.
  3. Для загрузки изображений / imageURL вам нужны фотоидентификаторы. Здесь будет работать «listId» или «listKey», опять же, зависит от сервера RETS. Так что попробуйте с обоими.
  4. У вас может быть доступ к нескольким типам изображений, таким как миниатюра, нормальный размер и высокое разрешение. Это также вы можете упомянуть в методе "getObject".
  5. После загрузки image / imageURL часто проверяйте поле «Временная метка изменения фото», чтобы определить любую модификацию image / imageURL.
  6. Некоторые серверы RETS будут предоставлять URL-адреса изображений в виде данных через такие ресурсы, как Media, Tour и т. Д.
1 голос
/ 10 апреля 2019

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

...