我正在创建一个函数,该函数将过滤一些数据并根据计数显示结果,并根据值对数据进行排序。特别是它使用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,但是该函数的作用相同。
答案 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。现在,排序,限制和唯一性都可以正常工作。