0
我想分配一个分数给每个用户提交的帖子,因为我从我的mongo数据库中检索它。我经历了整个过程,并在我的新的posts对象数组中成功添加了'score'属性。现在,我想根据该分数对帖子进行排序。我试图使用一个简单的比较函数,但它似乎我的代码甚至没有击中这个函数。为什么我的代码在我的map函数之后跳过我的排序函数?
我没有收到错误或任何打印到控制台。我得到的是我的帖子对象在分配属性的数组中。
为什么我的代码跳过这种排序功能?
预先感谢您。
postDB.connect
.then(db => db.collection("posts").find().forEach(function(posts) {
var postsArr = [];
postsArr.push(posts);
function generateScore(postWithoutScore) {
var timeSince = (((Date.now()/1000) - postWithoutScore.e) * 0.000277778);
var hh = ((postWithoutScore.upvote - 1)/Math.pow(timeSince + 2, 1.8)).toFixed(2);
return hh;
}
var postsWithScore = postsArr.map(function(post) {
// console.log(post);
return Object.assign({}, post, {
score: generateScore(post)
})
});
postsWithScore.sort(function (a, b){
console.log(b);
console.log(a);
return b[i].score - a[i].score;
});
console.log(postsWithScore);
})
.then(posts => {
console.log(posts);
res.render("projects", {
posts: posts
})
})
.catch(next))
});
你在'console'中遇到错误吗?看起来像'我'将是未定义的。 –
'我'没有在排序回调中定义。您的控制台日志应该建议使用'a.score'和'b.score' – charlietfl
我没有从功能中得到任何东西......无所谓我放入什么东西,没有打印出来。没有错误。我认为它没有被击中。 –