【问题标题】:sorting docs using promise with mongoose使用 mongoose 对文档进行排序
【发布时间】:2016-09-15 16:06:07
【问题描述】:

当我执行console.log(all) 时,我希望取回过滤后的排序数据,但我却取回了整个原始数据。为什么?

var Comp = require("./models/company.js");
  var arr = [
    {name : "comp1",industry : "industry1", ranking: 20},
    {name : "comp2",industry : "industry2", ranking: 5},
    {name : "comp3",industry : "industry3", ranking: 10}
  ]



var output = {};  
var promise = Comp.find({}).exec()
  promise.then(function(docs){
        return Comp.remove({}).exec()

    })
    promise.then(function(){
            console.log("deleted")
        })
    promise.then(function(){
        return Comp.create(arr).exec()

    })
    promise.then(function(data){
        output.data = data;
        console.log(output)
    })
    promise.then(function(){
        return Comp.find({}, 'name -_id ranking', {sort :{ranking :1}}).exec();
    })
    promise.then(
        function(all){
            console.log("test")
            console.log(all)
        },
        function(error){
            console.log(error)
        }
    )
    promise.then(function(){
        return Comp.count({}, function(count){
            return count;
        });
    })
    promise.then(function(count){
        console.log("count")
        // console.log(count)
    })

我的其他相关question

【问题讨论】:

    标签: javascript node.js mongodb promise


    【解决方案1】:

    您将所有.then 回调附加到同一个promise。这不是链接,而是branching

    分支:

    var p = Promise.resolve(1);
    p.then(foo);
    p.then(bar); // wont wait for foo. Calls bar(1).
    

    要链接,请始终附加到 last 承诺。

    链:

    var p = Promise.resolve(1);
    p = p.then(foo);
    p = p.then(bar); // waits for foo. Calls bar(result_from_foo).
    

    或者简单地说:Promise.resolve().then(foo).then(bar);

    【讨论】:

      猜你喜欢
      • 2016-09-18
      • 2019-10-27
      • 2017-08-29
      • 2016-06-28
      • 2019-04-11
      • 2016-08-27
      • 2019-03-03
      • 1970-01-01
      • 2013-04-18
      相关资源
      最近更新 更多