MongoDB Stitch中sort报错:sort is not a function 问题求助
问题原因及解决办法
你遇到这个错误是因为MongoDB Stitch的JavaScript SDK和原生MongoDB驱动的API逻辑不一样——Stitch里RemoteMongoCollection.find()返回的是RemoteMongoCursor对象,它没有链式调用的.sort()方法,而你沿用了原生驱动的写法,所以才触发了这个类型错误。
给你两种可行的解决方式:
方式一:把排序条件作为find的选项参数传入
直接在find()的第二个参数里配置sort选项,这是Stitch推荐的基础写法:
handleSortByName = () => { const mongodb = Stitch.defaultAppClient.getServiceClient(RemoteMongoClient.factory, 'mongodb-atlas'); mongodb .db('users') .collection('userDetails') .find({}, { sort: { name: -1 } }) // 排序规则放在第二个参数的配置项中 .then((users) => { console.log(users); }) .catch((err) => { console.log(err); }); };
方式二:使用聚合管道实现排序
如果后续需要叠加更复杂的查询逻辑,也可以用aggregate()方法,通过$sort阶段来完成排序:
handleSortByName = () => { const mongodb = Stitch.defaultAppClient.getServiceClient(RemoteMongoClient.factory, 'mongodb-atlas'); mongodb .db('users') .collection('userDetails') .aggregate([{ $sort: { name: -1 } }]) .then((users) => { console.log(users); }) .catch((err) => { console.log(err); }); };
简单来说,Stitch SDK的API封装和原生驱动有差异,别用原生MongoDB的链式调用习惯去写Stitch的代码就行~
内容的提问来源于stack exchange,提问作者ibragimov
相关产品推荐
相关产品推荐

