Reactjs 在GraphQL解析器中对MongoDB数据进行排序(Meteor/React/Apollo)
我正在尝试对GraphQl中查询返回的一些数据进行排序。我正在运行Meteor/React/Apollo/Graphql堆栈,这一行允许我在解析器Reactjs 在GraphQL解析器中对MongoDB数据进行排序(Meteor/React/Apollo),reactjs,mongodb,meteor,graphql,apollo,Reactjs,Mongodb,Meteor,Graphql,Apollo,我正在尝试对GraphQl中查询返回的一些数据进行排序。我正在运行Meteor/React/Apollo/Graphql堆栈,这一行允许我在解析器resolvers.js:return database.find({})中获取数据库中的所有数据。我想根据“name”字段,以及迄今为止我在网上找到的文档和其他内容,在服务器端对其进行排序,return database.find({}).sort({name:1})应该已经剪切了它,但是它实际上并没有返回任何东西,我似乎不明白为什么,我的控制台中没
resolvers.js
:return database.find({})
中获取数据库中的所有数据。我想根据“name”字段,以及迄今为止我在网上找到的文档和其他内容,在服务器端对其进行排序,return database.find({}).sort({name:1})
应该已经剪切了它,但是它实际上并没有返回任何东西,我似乎不明白为什么,我的控制台中没有显示任何内容,也没有抛出错误,因此我相信它只是null或空的
在我的Robo3T控制台中,我可以运行database.find({}).sort({name:1})
,我可以看到实际正在排序的数据。根据我的想法,这可能是由于,所以我尝试了排序([[“name”,1]]),但也不起作用,我不太确定还有什么别的办法
如果没有办法做到这一点-我应该仅仅依靠客户端排序吗?它的条目不多,<100,我想我应该在数据库中对它进行排序,因为我从不需要未排序的数据,而且它甚至可能不会有太大的变化
尽管如此,我还是想问这个问题,即使在我的数据库中只对它进行一次排序就足以满足这种特定的情况,否则我将如何在解析器中对数据进行排序,因为在其他情况下我需要这样做
谢谢
编辑-这是我所拥有的:
export default {
Query: {
test_query(obj, args, context) {
// Bottom line is output
console.log("test1");
console.log(Database.find({}).sort({name:1}));
// Bottom line is not output
console.log("test2");
return Database.find({});
},
}
EDIT2:我的数据库定义为database=new Mongo.Collection(“db_name”)
.find()
返回光标:
这适用于Meteor pubsub,但不适用于GraphQL/Apollo。尝试.find().toArray()
:
我相信您看到的文档是错误的。如果这确实是meteor,那么
数据库
可能是一个原始的mongo集合,而不是一个原始的mongo集合。流星系列的界面略有不同。就你而言,我认为你需要:
Database.find({}, {sort: {name: 1}}).fetch();
@xadm是的,我试图在返回之前登录,但什么都没有。没有异步/等待。我需要这些吗?我用更多的代码更新了这篇文章,把它放到了上下文中。啊,原生的。。。。IDK,但日志会有所帮助;)您能在定义和初始化
数据库的地方共享代码吗?这是流星收藏吗?谢谢,但不幸的是,这并没有改变什么。当我尝试console.log(Database.find({}).toArray)
时,它会打印undefined
。我尝试了添加.find()、.toArray、.sort()
的不同组合和顺序,但都没有效果。它打印未定义的
,或抛出错误消息,表示它们不是函数。顺便说一下,我尝试了toArray()
,但它抛出了一个错误:Database.find(…)。toArray不是一个函数。我不得不去掉括号,就是这样。我已经将我的数据库声明为database=newmongo.Collection(“db_name”)
,但我不知道它被区别对待。非常感谢。