Nodejs“querystring”模块

时间:2015-09-07 06:11:20

标签: node.js

我在项目中使用了内置的“查询字符串”模块。

这是我的示例代码

var querystring = require('querystring');
var postData = querystring.stringify({
    travelDate: "19-Sep-2015",
    travelDate: "05-Nov-2015",
});

console.dir(postData);

但它会记录'travelDate=05-Nov-2015'

我希望得到结果'travelDate=19-Sep-2015&travelDate=05-Nov-2015'

有什么方法可以解决这个问题吗?

更新:我说明了我的问题更多细节

我知道查询参数键应该是唯一的。但我需要从网站上获取数据。我观察它的格式为表单数据

他们有相同的键(“travelDate”)如下所示。

_eventId:showWtLblResult
mode:searchResultInter
wvm:WVMD
tripType:RT
origin:KHH
destination:NRT
travelDate:19-Sep-2015
travelDate:05-Nov-2015
adults:1
children:0
infants:0
cabinClass:ECONOMY
promoCode:
pointOfPurchase:OTHERS
flightNumberOW:
fareOW:
flightNumberRT:
fareRT:
channel:PB
bookingSource:
skyscanner_redirectid:
flexTrvlDates:

所以我无法简洁地包装我的请求体。

我有点顽固,我希望保持我的代码简洁。

3 个答案:

答案 0 :(得分:1)

为了对查询字符串使用两个相同的键,这是一个例子:

var postData = querystring.stringify({
    travelDate: [
        "19-Sep-2015",
        "05-Nov-2015"
    ]
});

答案 1 :(得分:0)

查询参数键应该是唯一的。为什么你没有这样的东西:

var querystring = require('querystring');
var postData = querystring.stringify({
    travelStartDate: "19-Sep-2015",
    travelEndDate: "05-Nov-2015",
});

console.dir(postData);

结果如下:

'travelStartDate=19-Sep-2015&travelEndDate=05-Nov-2015'

答案 2 :(得分:0)

你在同一个对象中使用两个相同的键;第二个是覆盖第一个,这就是你看到结果的原因。您应该使用它:

   09-07 12:00:32.082  21249-24268/com.example.callsmsforward W/System.err﹕ javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465;
   09-07 12:00:32.082  21249-24268/com.example.callsmsforward W/System.err﹕ nested exception is:
   09-07 12:00:32.083  21249-24268/com.example.callsmsforward W/System.err﹕ java.net.ConnectException: failed to connect to smtp.gmail.com/2404:6800:4003:c00::6c (port 465) after 90000ms: isConnected failed: ENETUNREACH (Network is unreachable)

或类似的东西。

但是,如果查询字符串参数名称必须相同,you can pass them as an array

var querystring = require('querystring');
var postData = querystring.stringify({
    travelDate01: "19-Sep-2015",
    travelDate02: "05-Nov-2015",
});

console.dir(postData);