使用promise和mongoose对文档进行排序

sorting docs using promise with mongoose

本文关键字:排序 文档 promise mongoose 使用      更新时间:2023-09-26

当我执行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)
    })

我的另一个相关问题。

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

分支机构:

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

若要链接,请始终附加到最后一个承诺。

链:

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);