使用mongoose的承诺分类文档

当我做console.log(all)我期望找回过滤的sorting数据,而是我回来了整个原始数据。 为什么?

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

我的其他相关问题 。

       

网上收集的解决方案 "使用mongoose的承诺分类文档"

你将所有的callback都附加在同一个承诺上。 这不是链接,而是分支 。

科:

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