Problemet du har är att mongoose-förfrågningar inte ger fullvärdiga löften -- direkt citerar http:// mongoosejs.com/docs/promises.html (v4.7.6)
// A query is not a fully-fledged promise, but it does have a `.then()`.
query.then(function (doc) {
// use doc
});
// `.exec()` gives you a fully-fledged promise
var promise = query.exec();
assert.ok(promise instanceof require('mpromise'));
Med andra ord, then
Funktionen är syntax sugar och inte ett promise
det är därför som bind
och andra löftesfunktioner fungerar inte.
För att få det att fungera kan du antingen slå in det i ett fullständigt löfte eller använda exec
fungerar enligt förslaget i dokumenten