我如何使用请求库和蓝鸟发送post请求

How do I send a post request using the Request library and Bluebird?

本文关键字:请求 post 蓝鸟 何使用      更新时间:2023-09-26

这是我的设置:

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

如此:

request('url')

返回一个promise

这并不:

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。因为request是两个,所以你没有得到一个错误。

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