Синяя птица обещает ватерлинии.native() sailsjs с sails-mongo

Согласно документации.native(), способ использования запроса.native() для sails-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);
       });
});

Как я могу избежать обратного вызова здесь и использовать обещания вместо этого. Обратите внимание, что я должен использовать агрегированные запросы, поэтому должен использовать.native()

1 ответ

Как упомянуто здесь, откройте bootstrap.js в config и исправьте все методы с обещанием, как это

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

На бонусной стороне вы можете использовать последнюю версию bluebird со всеми моделями. Надеюсь, поможет

Другие вопросы по тегам