【问题标题】:Reversing the .each() order (mongodb)反转 .each() 顺序(mongodb)
【发布时间】:2011-08-15 07:33:03
【问题描述】:

将 mongodb 与猫鼬一起使用:

我当前的代码返回正确的文档,但以错误的顺序将它们发送给客户端。我尝试在 .limit() 之后添加另一个排序命令来扭转这种情况,但效果不佳。有什么想法可以在 db 调用中实现这一点,而不是通过额外的代码来反转顺序?

Item.find().sort('_id','descending').limit(40).each(function(err, doc) {
    if(doc != null){
        client.send(JSON.stringify(doc));       
    }
});

【问题讨论】:

  • 怎么不好用?有没有一种简单的reverse() 方法可以使用,而不是尝试再次对它们进行排序?
  • @sarnold Item.find().sort('_id','descending').limit(40).reverse().each(function(err, doc) { 返回错误 TypeError: Object # has no method 'reverse'

标签: javascript node.js mongodb mongoose nosql


【解决方案1】:

根据您的 mongodb 查询的实际上下文,试试这个(meteor client.js):

Item.find({}, { sort: { _id: -1 } })

或在 db shell 中该代码:

Item.find({}).sort({'_id': -1});

【讨论】:

    【解决方案2】:

    这个怎么样?

    var orderedList = new Array();
    Item.find().sort('_id','descending').limit(40).each(function(err, doc) {
        orderedList.push(doc);
    });
    
    for (var i=orderedList.length; i>=0; i--){
       orderedList[i].doYourThang..
    }
    

    尝试:JQuery .each() backwards 用于 reverse() 插件

    【讨论】:

    • 嘿,谢谢你的想法,如果我这样做,我需要这样做:var orderedList = new Array(); Item.find().sort('_id','descending').limit(40).each( function(err, doc) { orderedList.push(doc); if (orderedList.length == 40) { for (var i=orderedList.length; i>=0; i--){ client.send(JSON.stringify(orderedList[i])); } } } );
    • 哦,对了——文档是你的回复,duh :P 确保你没有在每个函数中包含循环,你将在每次迭代中迭代它****编辑:刚刚意识到你有你的 if = 40 子句来处理它。
    • 但是,我知道的每个函数都没有本地反向。但是,这可能对您有用:stackoverflow.com/questions/1394020/jquery-each-backwards
    猜你喜欢
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多