쿼리 라이브러리모든 게시물에서 여러 문자열 검색 및 교체하기
모든 게시물에서 여러 문자열 검색 및 교체하기
단일 작업으로 여러 게시물을 업데이트하여 콘텐츠를 검색하고 교체합니다.
변수 $postIds로 지정된 게시물에 대해 이 쿼리는 $search의 모든 문자열을 $replace의 문자열로 교체합니다(게시물의 제목, 발췌문, 콘텐츠가 대상입니다).
이 쿼리를 실행하려면 엔드포인트에서 Nested Mutations가 활성화되어 있어야 합니다.
query TransformAndExportData(
$postIds: [ID!]!
$search: [String!]!
$replace: [String!]!
) {
posts: posts(
filter: { ids: $postIds }
pagination: { limit: -1 }
sort: { by: ID, order: ASC }
) {
id
rawTitle
rawContent
rawExcerpt
@strReplaceMultiple(
search: $search
replaceWith: $replace
affectAdditionalFieldsUnderPos: [1, 2]
)
@deferredExport(
as: "postAdaptedSources"
type: DICTIONARY
affectAdditionalFieldsUnderPos: [1, 2]
)
}
}
query AdaptDataForMutationInput
@depends(on: "TransformAndExportData")
{
postInputs: _echo(value: $postAdaptedSources)
@underEachJSONObjectProperty(
passValueOnwardsAs: "adaptedSource",
affectDirectivesUnderPos: [1, 2, 3, 4]
)
@applyField(
name: "_objectProperty",
arguments: {
object: $adaptedSource,
by: {
key: "rawTitle"
}
},
passOnwardsAs: "adaptedTitle"
)
@applyField(
name: "_objectProperty",
arguments: {
object: $adaptedSource,
by: {
key: "rawExcerpt"
}
},
passOnwardsAs: "adaptedExcerpt"
)
@applyField(
name: "_objectProperty",
arguments: {
object: $adaptedSource,
by: {
key: "rawContent"
}
},
passOnwardsAs: "adaptedContent"
)
@applyField(
name: "_echo",
arguments: {
value: {
title: $adaptedTitle,
excerpt: $adaptedExcerpt,
contentAs: {
html: $adaptedContent
}
}
},
setResultInResponse: true
)
@export(as: "postInputs")
}
mutation SearchAndReplaceStringsInAllPosts(
$postIds: [ID!]!
)
@depends(on: "AdaptDataForMutationInput")
{
adaptedPosts: posts(
filter: { ids: $postIds }
pagination: { limit: -1 }
sort: { by: ID, order: ASC }
) {
id
postInput: _objectProperty(
object: $postInputs,
by: { key: $__id }
) @remove
update(input: $__postInput) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
title
content
excerpt
}
}
}
}