エントリとともにアセットを追加したいと考えています。フォームを使用してデータを入力し、cloudinary を使用して画像をアップロードしています。Contentful-Management から 409 ステータス コードと「バージョンの不一致」エラーが表示されます。最初は、エントリを公開せず、古いバージョンのエントリを持っていることが原因である可能性があると考えました. しかし、私は自分のコードを調べて、具体的に修正しました。
これらは私が以下に取っているステップです(私が見落としたステップを見た場合は追加してください、それは大歓迎です)
#1 Get Space With Id
#2 Get Environment
#3 Create Entry
#4 Reassign Entry to have latest Version
#5 Asset Creation
#6 Asset Publish
#7 Update Entry With New Asset
以下は私のエラーメッセージです:
async function createEntryWithAsset(
data: Omit<Property, "id">,
uploadHref: string
) {
// #1 Get Space
const space = await client.getSpace(process.env.NEXT_CONTENTFUL_SPACE_ID);
// #2 Get Environment
const environment = await space.getEnvironment("master");
// #3 Create Entry
let entry = await environment.createEntry("propertyListings", {
fields: {
/* ... */
},
});
// #4 Reassign Entry to have latest version
entry = await entry.publish();
// #5 Asset Creation
let asset = await environment.createAssetWithId(
faker.datatype.number(4).toString(),
{
fields: {
title: {
"en-US": "images",
},
file: {
"en-US": {
contentType: "image/jpeg",
fileName: faker.datatype.number(5) + "-" + data.zipcode + ".jpg",
upload: uploadHref,
},
},
},
}
);
// #6 Asset Publish
asset = await asset.processForAllLocales()
asset = await asset.publish();
//#7 Update Entry With New Asset
entry.fields["images"] = {
'en-US': {
sys: {
id: asset.sys.id,
linkType: "Asset",
type: "Link",
}},
};
entry = await entry.update();
entry = await entry.publish();
}