fix(richtext-*): hasMany relationships not populated correctly

This commit is contained in:
Alessio Gravili
2023-10-21 23:58:47 +02:00
parent 863b79348b
commit e197e0316f
2 changed files with 35 additions and 30 deletions

View File

@@ -36,6 +36,7 @@ export const recurseNestedFields = ({
if (field.type === 'relationship') { if (field.type === 'relationship') {
if (field.hasMany && Array.isArray(data[field.name])) { if (field.hasMany && Array.isArray(data[field.name])) {
if (Array.isArray(field.relationTo)) { if (Array.isArray(field.relationTo)) {
// polymorphic relationship
data[field.name].forEach(({ relationTo, value }, i) => { data[field.name].forEach(({ relationTo, value }, i) => {
const collection = req.payload.collections[relationTo] const collection = req.payload.collections[relationTo]
if (collection) { if (collection) {
@@ -99,21 +100,23 @@ export const recurseNestedFields = ({
} }
} }
if (typeof data[field.name] !== 'undefined' && typeof field.relationTo === 'string') { if (typeof data[field.name] !== 'undefined' && typeof field.relationTo === 'string') {
const collection = req.payload.collections[field.relationTo] if (!('hasMany' in field) || !field.hasMany) {
promises.push( const collection = req.payload.collections[field.relationTo]
populate({ promises.push(
id: data[field.name], populate({
collection, id: data[field.name],
currentDepth, collection,
data, currentDepth,
depth, data,
field, depth,
key: field.name, field,
overrideAccess, key: field.name,
req, overrideAccess,
showHiddenFields, req,
}), showHiddenFields,
) }),
)
}
} }
} else if (fieldHasSubFields(field) && !fieldIsArrayType(field)) { } else if (fieldHasSubFields(field) && !fieldIsArrayType(field)) {
if (fieldAffectsData(field) && typeof data[field.name] === 'object') { if (fieldAffectsData(field) && typeof data[field.name] === 'object') {

View File

@@ -76,21 +76,23 @@ export const recurseNestedFields = ({
data[field.name]?.value && data[field.name]?.value &&
data[field.name]?.relationTo data[field.name]?.relationTo
) { ) {
const collection = req.payload.collections[data[field.name].relationTo] if (!('hasMany' in field) || !field.hasMany) {
promises.push( const collection = req.payload.collections[data[field.name].relationTo]
populate({ promises.push(
id: data[field.name].value, populate({
collection, id: data[field.name].value,
currentDepth, collection,
data: data[field.name], currentDepth,
depth, data: data[field.name],
field, depth,
key: 'value', field,
overrideAccess, key: 'value',
req, overrideAccess,
showHiddenFields, req,
}), showHiddenFields,
) }),
)
}
} }
} }
if (typeof data[field.name] !== 'undefined' && typeof field.relationTo === 'string') { if (typeof data[field.name] !== 'undefined' && typeof field.relationTo === 'string') {