Contentful API: загрузите и назначьте изображение записи

Я использую Contentful Management Javascript SDK для обновления записей в своем Contentful пространстве и смог без проблем обновить простые поля с текстом.

Моя проблема в том, что я не могу понять, как обновить изображения в моей записи; Я могу загружать изображения в раздел мультимедиа, но мне не удалось назначить какие-либо изображения свойству записи.

Это возможно или это ограничение Contentful?

Вот мой код:

client.getSpace(CONTENTFUL_SPACE).then((space) => {
// retrieve my Contentful space

    space.getEntry(CONTENTFUL_ENTRY).then(function (entry) {
    // get a specific entry

        // create a new asset in my Contentful media section
        space.createAssetWithId(RANDOM_ID, {
            fields: {
                file: {
                    'en-GB': { 
                        contentType: 'image/jpeg',
                        fileName: 'test.jpg',
                        upload: 'http://www.example.com/test.jpg'
                    }
                }
            }
        })
        .then(asset => asset.processForAllLocales())
        .then(asset => asset.publish())
        .then(function(asset) {

            // assign uploaded image as an entry field
            // (none of these work:)
            entry.fields["image"]["en-GB"] = asset.sys.id;
            entry.fields["image"]["en-GB"] = asset.fields.file["en-GB"].url;
            entry.fields["image"]["en-GB"] = asset;
        });
    });
});

person mmmoustache    schedule 08.03.2017    source источник


Ответы (1)


Привет, я сопровождаю js SDK, вот как вы можете добавить актив в свою запись, предполагая, что у вас есть поле с именем image типа media.

client.getSpace(CONTENTFUL_SPACE).then((space) => {
// retrieve my Contentful space

space.getEntry(CONTENTFUL_ENTRY).then(function (entry) {
// get a specific entry

    // create a new asset in my Contentful media section
    space.createAssetWithId(RANDOM_ID, {
        fields: {
            file: {
                'en-GB': { 
                    contentType: 'image/jpeg',
                    fileName: 'test.jpg',
                    upload: 'http://www.example.com/test.jpg'
                }
            }
        }
    })
    .then(asset => asset.processForAllLocales())
    .then(asset => asset.publish())
    .then(function(asset) {

        // assign uploaded image as an entry field
        entry.fields["image"]["en-GB"] = {"sys": {"id": asset.sys.id, "linkType": "Asset", "type": "Link"}};
        return entry.update()
    });
});
});
person Khaled Garbaya    schedule 08.03.2017