Bluebird Promises in waterline .native()sailsjs with sails-mongo

时间:2016-08-30 05:46:23

标签: mongodb promise sails.js waterline sails-mongo

根据.native()文档,对sails-mongo使用.native()查询的方法是:

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

如何避免回调并使用promises代替。请注意,我必须使用聚合查询,因此必须使用.native()

1 个答案:

答案 0 :(得分:2)

正如所提到的here在配置中打开bootstrap.js并修补所有承诺的方法

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

在奖金方面,您可以使用所有型号的最新版蓝鸟。希望它有所帮助