使用sort()提供仓库清单

时间:2019-11-23 07:21:17

标签: javascript mongodb callback

我正在创建一个函数,该函数将过滤一些数据并根据计数显示结果,并根据值对数据进行排序。特别是它使用sort()和limit()方法。我的limit()方法很简单并且可以正常工作,但是我的sort()方法却无法正常工作。它正在运行,但不是我打算的方式。当我使用-1时,它的顺序确实相反。但是,无论我搜索什么(使用1),我都会得到相同的列表。有人可以帮我解决这个问题吗?这是对mongodb的查询,(正如您所知道的,我正在对github进行查询以获取存储库列表)。

这是我的代码:

       let fetch = callback => {
         let cb = (err, repos) => { callback(repos) };
         Repo.find(cb).sort({forks: 1}).limit(25);
       }

到目前为止,当这是最后一个方法-.exec(cb)时,没有什么区别。当这是最后一个方法时,我没有在find方法中使用cb,但是该函数的作用相同。

2 个答案:

答案 0 :(得分:0)

我认为sort()函数从未实现,因为find()返回了cb函数的结果。 您可以尝试使用Promise代替:

let fetch = callback => {
  Repo.find().sort({folk: 1}).limit(25).then(result => {
    callback(result);
  })
}

编辑:

let fetch = (username) => {
  Repo.find({username: username}).sort({folk: 1}).limit(25).then(result => {
    console.log(result);
  });
}

答案 1 :(得分:0)

因此,最后我在mongodb模式中发现了错误的行。这是我所做的,以确保我的存储库是唯一的。正确的代码是:id:{type:Number,unique:true}。还要注意,我在写:repo_id:repo.repo_id。这是不正确的,因为它必须为:id:id。现在,排序,限制和唯一性都可以正常工作。