request.getAsync()只返回1个参数

时间:2016-01-14 17:38:43

标签: node.js promise bluebird node-request

我正在尝试获取返回.cert主体的请求,但是使用bluebird的.spread似乎只返回1个参数而不是它应该返回的两个参数。

<?php
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$eh = $steamprofile[steamid];
$sql = "SELECT steamid FROM Main";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        if (($row["steamid"]) == $steamprofile['steamid']){
echo "SteamID Is Equal and Created!";
}

    }
} else {
    echo "Nope?";
}

$conn->close();
?> 

这将抛出一个未定义主体的错误。 Response返回ENTIRE json格式,包括与结构混乱的字符串格式的证书。

我正在使用请求2.67.0和bluebird 3.1.1。 这是证书网址:https://static.gc.apple.com/public-key/gc-prod-2.cer

1 个答案:

答案 0 :(得分:6)

Bluebird 3.0将promisification更改为默认为仅在执行promisification时使用第一个参数。

在致电Promise.promisifyAll(require("request"))时,您需要传递第二个参数,表明您对所有参数感兴趣Promise.promisifyAll(require("request"), {multiArgs: true})

或者,您可以使用request-promise包为您执行此操作以及其他一些小修复(它在内部使用蓝鸟)。