如何使用请求库和Bluebird发送发布请求?

所以inheritance人我的设置:

var Promise = require("bluebird"); var request = Promise.promisify(require('request')); 

这工作:

 request('url') 

它返回一个承诺

这不:

 request.post('url', {form: {type: 'artist'}}) 

给我这个错误:

 TypeError: Object function promisified(_arg0,_arg1) { ... }has no method 'post' at /Users/beamer30/projects/wevo/controllers/music.js:85:30 at Array.map (native) at MusicSearch.spotifyRelated (/Users/beamer30/projects/wevo/controllers/music.js:84:22) at MusicSearch.findRelatedArtists (/Users/beamer30/projects/wevo/controllers/music.js:48:7) at musicController.search (/Users/beamer30/projects/wevo/controllers/music.js:100:17) at Layer.handle [as handle_request] (/Users/beamer30/projects/wevo/node_modules/express/lib/router/layer.js:76:5) at next (/Users/beamer30/projects/wevo/node_modules/express/lib/router/route.js:100:13) at Route.dispatch (/Users/beamer30/projects/wevo/node_modules/express/lib/router/route.js:81:3) at Layer.handle [as handle_request] (/Users/beamer30/projects/wevo/node_modules/express/lib/router/layer.js:76:5) at /Users/beamer30/projects/wevo/node_modules/express/lib/router/index.js:227:24 

关于如何使这项工作的任何想法? 什么是正确的方法来做到这一点?

当您提交请求返回时,您只会提交返回的函数。 相反 – 使用promisifyAll这promisifies整个对象。 由于request是你没有得到一个错误。

 var Promise = require("bluebird"); var request = Promise.promisifyAll(require('request')); // this will work