フォーム フィールドに配列を配置する必要がある API を使用しています。与えられた例は PHP ですが、私は NodeJS を使用しています。API は、フィールドの 1 つが配列であることを想定していますが、これを行う方法を理解するのに苦労しています。
PHP の例は次のようになります。
$request->buildPostBody(array(
'reference' => array(
'line1' => 'Soundboard Setup',
'line2' => 'Thank you for the order',
'line3' => 'Our reference is: 3993029/11BD'
),
'lines' => array(
array('amount' => 50,
'amount_desc' => 'panels',
'description' => 'Sound buttons',
'tax_rate' => 21,
'price' => 5.952
),
array('amount' => 1,
'amount_desc' => '',
'description' => 'Wooden case',
'tax_rate' => 21,
'price' => 249
),
array('amount' => 10,
'amount_desc' => 'hours',
'description' => 'Support',
'tax_rate' => 6,
'price' => 62.5
),
array('description' => 'This is a textline'))
));
NodeJSでは、これを試しました(とりわけ):
var formData = {
reference: [{'line1':'something'}], // <- this isn't going to fly
lines: [{
'amount': amount,
'amount_desc': 'amount_desc',
'description': 'description',
'tax_rate': 0,
'price': 100
}]
};
request.post({
url: 'https://www.factuursturen.nl/api/v1/invoices/',
formData: formData,
headers: {
'Authorization': 'Basic ' + new Buffer(user + ':' + key).toString('base64')
}
}, function (error, response, body) {
if (!error && [200, 201, 204].indexOf(response.statusCode) > 0) {
console.log('posted ': ', response.statusCode);
} else {
console.log('problem with request: ', error, response.statusCode, body);
}
}
);
次のようにオブジェクトを渡そうとするとreference: {'line1':'foo'}
、ノードからエラーが発生します。
node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js:33
source.on('error', function() {});
^
TypeError: Object #<Object> has no method 'on'
この丸いペグをその四角い穴に押し込むにはどうすればよいでしょうか?