我一直在使用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;
});
});
});
答案 0 :(得分:5)
您好我是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()
});
});
});