我使用的是MongoDB和Node.JS,我试图从MongoDB中获取数据,并将其显示在我的html页面中,我使用了下面的代码,但是这只会以不特定的顺序返回所有条目:
server.js
// This is for getting the list of all players from my DB
app.get("/getPlayers", function(request, response) {
    db.getPlayers().then(function(players){
        console.log(players);
        response.send(players);
    });
});leadership.html
<script>
    $(function() {
        $.get("http://localhost:9000/getPlayers", {}, function (res) {
        let data = res;
        console.log(res);
        for (i = 0; i < data.length; i++) {
            let name = data[i].name;
            let score = data[i].score;
            console.log(data[i].name);
            $("#leadership").append("<tr><td class=\"name\">"
                + data[i].name + "</td><td class=\"score\">" 
                + data[i].score + "</td></tr>");
         }
     });
});
</script>在查看了W3学校之后,我尝试将代码修改为:
db.getPlayers().sort().limit(10).then(function(players)然而,我的Chrome控制台带回了一台internal server error 500。有人能指出我怎样才能先按最大数字排序,然后将结果限制为10吗?在数据库中有一个名为players的集合,它包含name和score
db.js
var Player = mongoose.model("Player", {name: String, score: Number}); 
    module.exports.Player = Player;发布于 2020-01-01 14:49:45
试试这样的东西。顺序、排序和限制可以从前端传递,或者在“标记”之后更改默认值。
玩家是导入的模型,您可以这样做,或者在模型本身中使用方法。
app.post('/api/players',(req,res)=>{
    let order = req.body.order ? req.body.order : "-1";
    let sortBy = req.body.sortBy ? req.body.sortBy : "_id";
    let limit = req.body.limit ? parseInt(req.body.limit) : 100;      
    Players.
    find().
    sort([[sortBy,order]]).
    limit(limit).
    exec((err,players)=>{
        if(err) return res.status(400).send(err);
        res.status(200).json({
            size: players.length,
            players
        })
    })
})
https://stackoverflow.com/questions/59553312
复制相似问题