sql >> Databasteknik >  >> NoSQL >> MongoDB

Använd bluebird för mongoose, fick .bind är inte en funktion

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




  1. Försöker befolka i mongoose endast om ref inte är null - fungerar inte

  2. Mongoimport ignorera inledande nolla i csv

  3. Mongo-go-drivrutinsfel Nytt klientfel ClientOptions i argument till mongo.NewClient

  4. Gör en Twitter-liknande tidslinje med MongoDB