Как решить ошибку Velo WDE0075: метаданные для опорного поля типа не предоставлены при программном добавлении эталонногоJavascript

Форум по Javascript
Ответить
Anonymous
 Как решить ошибку Velo WDE0075: метаданные для опорного поля типа не предоставлены при программном добавлении эталонного

Сообщение Anonymous »

Я пытаюсь программно добавить новое эталонное поле в существующую коллекцию в Velo, используя Wix-Data.V2. Несмотря на то, что я следил за всеми задокументированными и недокументированными лучшими практиками, которые я мог найти, я постоянно застрял в WDE0075: метаданные для поля для справочного типа, не предоставленную ошибку. Обе коллекции существуют и имеют данные.// File: backend/maintenance.js

import { collections } from 'wix-data.v2';
import { elevate } from 'wix-auth';

const elevatedUpdateDataCollection = elevate(collections.updateDataCollection);
const elevatedGetDataCollection = elevate(collections.getDataCollection);

export async function test_addReferenceField() {

const collectionId = "Organizations";
const newField = {
// Per API errors, the identifier must be 'key' for the update payload
key: "primaryContact",
displayName: "İletişimden Sorumlu Kişi",
type: "REFERENCE",
// Per extensive research, adding the referenceOptions object
referenceOptions: {
referencedCollectionId: "People",
displayFieldKey: "fullName", // A valid TEXT field in the 'People' collection
isPrimaryDisplayField: true // The last undocumented piece I found
}
};

try {
console.log(`Final Test Started: Adding reference field "${newField.key}" to "${collectionId}"...`);

// 1. GET: Fetch the current collection to get revision, permissions, etc.
const currentCollection = await elevatedGetDataCollection(collectionId);

// 2. TRANSFORM: Address the id/key paradox between get/update APIs
// Convert the fields array from the 'id'-based format returned by getDataCollection
// to the 'key'-based format expected by updateDataCollection.
const transformedFields = currentCollection.fields.map(field => {
const { id, ...rest } = field;
return { key: id, ...rest };
});

// 3. MODIFY: Check for existence and add the new field
const fieldExists = transformedFields.some(f => f.key === newField.key);
if (fieldExists) {
console.log(`Field "${newField.key}" already exists. Aborting.`);
return;
}
const allFields = [...transformedFields, newField];

// Prepare the complete payload
const updatePayload = {
id: collectionId,
revision: currentCollection.revision,
fields: allFields,
permissions: currentCollection.permissions
};

// 4. UPDATE: Call the API
await elevatedUpdateDataCollection(updatePayload);

console.log(`SUCCESS! Field "${newField.key}" was added to "${collectionId}".`);

} catch (error) {
console.error("ERROR:", error); // The code always fails here
throw error;
}
}
< /code>
Точная ошибка: < /p>
Независимо от того, что я попробую, блок улова запускается с этой ошибкой: < /p>
{
"message": "❌ HATA OLUŞTU: message: 'WDE0075: Metadata for Reference type field not provided.'\ndetails:\n applicationError:\n description: 'WDE0075: Metadata for Reference type field not provided.'\n code: WDE0075\n data: {}"
}
< /code>
То, что я пробовал (отладка путешествия): < /p>
Эта ошибка кажется простой, но она сохранилась благодаря невероятному количеству устранения неполадок. Вот все, что мы пробовали: < /p>
Двухфазное творение: изначально я пытался создать коллекции и их ссылки в одном сценарии. Чтобы решить потенциальную проблему зависимости (WDE0075), я переключился на двухфазный процесс: сначала создайте все коллекции с основными полями, а затем запустите второй процесс, чтобы обновить их с помощью эталонных полей. Ошибка сохранилась. < /P>
Задержка бэкэнд: я добавил задержку сна (5000) между этапами создания и обновления, чтобы исключить любую задержку репликации бэкэнд. Ошибка сохранилась. Я добавил этот объект с ссылкой CollectionId и DisplayFieldKey. Установилась ошибка. < /P>
IsprimaryDisplayfield. Я добавил это. Ошибка сохранилась. < /P>
Парадокс идентификатора против ключа: я обнаружил серьезную несоответствия между API Velo. < /P>
getDataCollection () Возвращает объекты полевых значений со свойством идентификатора (например, {id: "FullName", ...}). Пусто) Если полевые объекты в своей полезной нагрузке не имеют свойства ключа. Даже с этим исправлением я вернулся к исходной ошибке WDE0075. Объект ReferenceOptions, ссылка на CollectionId, дисплей -флаг, который является действительным полем в целевой коллекции, и флаг iSprimaryDisplayfield, и я преобразую данные для решения парадокса идентификатора/ключа ... какую еще «метаданные» может быть ошибка WDE0075, возможно, ссылаться? Wix-Data.v2/collections.updateCollection API?

Подробнее здесь: https://stackoverflow.com/questions/797 ... t-provided
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»