如何使用带有 Mongoose 和 ES6 承诺的 Graphql 中的 find 来解析多条记录
Posted
技术标签:
【中文标题】如何使用带有 Mongoose 和 ES6 承诺的 Graphql 中的 find 来解析多条记录【英文标题】:How to resolve the multiple records using find in Graphql with Mongoose and ES6 promises 【发布时间】:2015-12-05 10:55:28 【问题描述】:我最近开始使用 Graphql,当从数据库中找到多个具有条件的记录(如 find('author.id':id)) 时,我得到的响应为 NULL。在控制台中,所有记录都被打印出来,但是解决时响应显示为空。
我的代码如下:
export default
eventByUserId:
type: new GraphQLList(EventType),
args:
id:
type: GraphQLID
,
resolve: (root, id) =>
return new Promise((resolve, reject) =>
Event.find('author.id': id).exec((err, res) =>
console.log(res);
err ? reject(err) : resolve(res);
);
);
;
;
通过类似的查询:
eventByUserId
(
id:"55dd69e702a488b81c4dd8ed"
)
title
description
start
mediaurl
locationstate,city
authorid, name
commentstext,created,authorid,name
postsurl,mediaType,imageUrl,note,authorid,name
_id
回复如下:
"data":
"eventByUserId":
"title": null,
"description": null,
"start": null,
"media": null,
"location": null,
"author": null,
"comments": null,
"posts": null,
"_id": null
这是我的 EventType:
export default new GraphQLObjectType(
name: 'Event',
description: 'A event',
fields: () => (
_id:
type: GraphQLString,
description: 'The id of the event.',
,
title:
type: GraphQLString,
description: 'The title of the event.',
,
description:
type: GraphQLString,
description: 'The description of the event.',
,
start:
type: GraphQLString,
description: 'The start date of the event.',
,
media:
type:new GraphQLList(MediaType),
description:'List of media.',
,
location:
type:new GraphQLList(LocationType),
description:' The list of location. ',
,
comments:
type:new GraphQLList(CommentType),
description:' The list of Comments. ',
,
posts:
type:new GraphQLList(PostType),
description:' The list of Posts. ',
,
created:
type: GraphQLString,
description: 'The created at.',
,
author:
type: AuthorType,
description: 'The author for the event.',
)
);
【问题讨论】:
请出示电话。你到底从哪里得到null
?
你真的不应该混合使用 CommonJS 和 ES6 导出。
我不是用普通js只用es6
使用邮递员获取响应,我正在调用 eventByUserId。这就像在上面的查询中
你能不能也显示EventType
的定义?
【参考方案1】:
在这种情况下,我们正在尝试解析数据列表,因此在 eventByUserId 中,我们必须将 GraphQLList 的类型设为 type:new GraphQLList(EventType) 来代替 type:EventType。我也在编辑我的帖子。谢谢你的支持。。
【讨论】:
能否通过提供代码示例更准确地回答您的问题?我有完全一样的问题。谢谢 @Sulliwane:请给我你的代码,我会检查一次。 感谢 Mahesh,我实际上通过使用 mongoose "findById" 解决了我的问题! 哦!!没关系。如果 GraphQL 有任何问题,请随时问我。以上是关于如何使用带有 Mongoose 和 ES6 承诺的 Graphql 中的 find 来解析多条记录的主要内容,如果未能解决你的问题,请参考以下文章
使用带有 async/await 的 mongoose 承诺
未来所有模型实例的 Mongoose Save 方法的Sinon Mock(带有承诺)