2016-08-30 4 views
0

Nach der .native() Dokumentation, die Art und Weise() Abfrage für Segel-Mongo zu verwenden .native ist:Drossel Promises in Wasserlinie .native() sailsjs mit Segel-Mongo

Pet.native(function(err, collection) { 
    if (err) return res.serverError(err); 
    collection.find({}, { 
     name: true 
    }).toArray(function (err, results) { 
      if (err) return res.serverError(err); 
       return res.ok(results); 
     }); 
}); 

Wie kann ich vermeiden Sie Rückruf hier und verwenden Sie stattdessen Versprechen. Beachten Sie, dass ich Aggregatabfragen verwenden, so müssen verwenden .native()

+0

Haben Sie einen Blick auf [Wie konvertiere ich eine bestehende Callback-API zu versprechen?] (Http://stackoverflow.com/q/22519784/1048572)? – Bergi

Antwort

2

Wie erwähnt here öffnen bootstrap.js in config und Affe Patch alle Methoden mit Versprechen wie dieses

module.exports.bootstrap = function(cb) { 
var Promise = require('bluebird'); 

Object.keys(sails.models).forEach(function (key) { 
    if (sails.models[key].query) { 
     sails.models[key].query = Promise.promisify(sails.models[key].query); 
    } 
}); 

cb(); }; 

Auf der Bonus-Seite Sie können die neueste Version von Bluebird mit allen Modellen verwenden. Hoffe, es hilft