sql >> Database teknologi >  >> NoSQL >> MongoDB

Brug blåfugl til mongoose, fik .bind er ikke en funktion

Det problem, du har, er, at mongoose-forespørgsler ikke returnerer fuldgyldige løfter -- direkte citerende 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 andre ord, then funktion er syntaks sukker og ikke et promise hvilket er grunden til bind og andre løftefunktioner virker ikke.

For at få det til at virke, pakker du det enten ind i et fuldt løfte eller bruger exec fungerer som foreslået i dokumenterne




  1. Er Redis-opdateringer synkrone?

  2. MongoDB:output 'id' i stedet for '_id'

  3. Tvetydig diskriminator 'myType' når 'myType' genereres dynamisk under kørsel

  4. mongodb - hvordan man finder og derefter samler