Содержательный API: загрузка и назначение изображения для записи
Я использовал SDK Javascript Contentful Management для обновления записей в моем 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;
});
});
});
1 ответ
Решение
Привет, я сопровождаю js SDK. Вот как вы можете добавить ресурс к своей записи, если у вас есть поле с именем image
типа носителя.
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()
});
});
});