如何解决与猫鼬聚合后,使用GraphQL查询从MongoDB获取结果
所以我有以下问题。 我有一个mongoDB集合和一个对应的mongoose模型,看起来像这样。
export const ListItemSchema = new Schema<ListItemSchema>({
title: { type: String,required: true },parentId: { type: Schema.Types.ObjectId,required: false },});
export const TestSchema = new Schema<Test>(
{
title: { type: String,list: { type: [ListItemSchema],}
);
如您所见,我的TestSchema在内部包含一个ListItems数组-> TestSchema也是我在MongoDB中的集合。
现在,我只想从具有特定ID的测试中查询我的ListItem。 嗯,至少从MongoDB方面来看,这并不是什么大问题。 我为此使用MongoDB聚合框架,并在自定义解析器中调用聚合。
这是从特定TestModel中仅获取我的listItem数组的代码
const test = TestModel.aggregate([
{$match: {_id: id}},{$unwind: "$list"},{
$match: {
"list.parentId": {$eq: null},},{$replaceRoot: {newRoot: "$list"}},]);
这是结果
[ { _id: randomId,title: 't',parentId: null },{ _id: randomId,title: 'x'
parentId: null
} ]
触发解析器的查询如下所示,并放置在我的测试类型编写器中。
query getList {
test(testId:"2f334575196fe042ea83afbf",parentId: null) {
title
}
}
到目前为止很好...但是! Ofc我的查询将失败或导致结果不太理想^^,因为GraphQL期望基于Test-Model的数据但接收到一个完全随机的数组。
因此,在多次输入后,这里是一个问题:
如何更改查询以接收列表数组? 我必须调整查询还是猫鼬呢?
我确实停留在这一点上,所以任何帮助都很棒!
预先感谢:)
解决方法
我不确定我是否正确理解了您的问题。 在您的graphql中,尝试从查询类型中省略感叹号(!)。
类似:
type Query {
test: TestModel
}
代替
type Query {
test: TestModel!
}
然后您会在控制台中收到错误消息,但仍然能够接收任何形式的数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。