将引用数组限制为尚未引用的文档
Limit array of references to documents that have not been referenced yet
我有一个“引用选择器”(即编辑者可以选择要引用的文档的模块)但我想将结果限制为尚未引用的文档。
这是我在另一个文档中使用的参考选择器的架构:
export default {
title: 'Project Selector',
name: 'projectSelector',
type: 'object',
fields: [
{
title: 'Project',
name: 'project',
type: 'reference',
to: [
{ type: 'project' }
],
options: {
filter: // What does my filter need to look like?
}
}
]
}
export default {
title: 'Home Page',
name: 'homePage',
type: 'document',
fields: [
{
title: 'Projects',
name: 'projectsGrid',
type: 'array',
of: [
{ type: 'projectSelector' }
],
},
]
}
请注意,projectSelector
对象和 homePage
文档不共享任何父<>子关系。
只要我们谈论的是选择尚未在该数组中选择的文档,我会用类似的方法来处理它:
options: {
filter: ({ document }) => {
const refList = document?.projectsGrid.map(item => {
return item?.project?._ref
})
return {
filter: '!(@._id in $list) && !(_id in path("drafts.**"))',
params: { list: refList }
}
}
},
这应该映射现有的参考文献,return _ref
s,然后在添加新参考文献时查阅该列表以将其过滤掉。
我有一个“引用选择器”(即编辑者可以选择要引用的文档的模块)但我想将结果限制为尚未引用的文档。
这是我在另一个文档中使用的参考选择器的架构:
export default {
title: 'Project Selector',
name: 'projectSelector',
type: 'object',
fields: [
{
title: 'Project',
name: 'project',
type: 'reference',
to: [
{ type: 'project' }
],
options: {
filter: // What does my filter need to look like?
}
}
]
}
export default {
title: 'Home Page',
name: 'homePage',
type: 'document',
fields: [
{
title: 'Projects',
name: 'projectsGrid',
type: 'array',
of: [
{ type: 'projectSelector' }
],
},
]
}
请注意,projectSelector
对象和 homePage
文档不共享任何父<>子关系。
只要我们谈论的是选择尚未在该数组中选择的文档,我会用类似的方法来处理它:
options: {
filter: ({ document }) => {
const refList = document?.projectsGrid.map(item => {
return item?.project?._ref
})
return {
filter: '!(@._id in $list) && !(_id in path("drafts.**"))',
params: { list: refList }
}
}
},
这应该映射现有的参考文献,return _ref
s,然后在添加新参考文献时查阅该列表以将其过滤掉。