2011-09-21 75 views
1

我想更新和數組傳遞一個json對象或變量並在函數中構建json。哪種做法最好?Couchdb更新數組發送更新函數中的json對象

例如,我使用函數發送變量和構建JSON:

function(doc,req){ 
var name = req.query.name; 
var number = req.query.number; 
var channel = {"name":"" , "number" : ""}; 
channel.name = name; 
channel.number = number; 
doc.channels.push(channel); 
return[doc, channel + ' added'];} 

捲曲-X PUT https://server/db/_design/doc/_update/addChannel/channels?name=myChannel&number=23

但我得到的是眼前這個數組中:

{ 
    "name": "myChannel" 
} 

爲什麼第二個變量不在那裏?

是否有可能在URL中傳遞json對象:channels?json = {} ...?

感謝

回答

3

我懷疑你忘了在單引號的網址。 &的存在表明它應該在後臺運行命令(並且'number = 23'部分被忽略)。

試試;

curl -X PUT 'https://server/db/_design/doc/_update/addChannel/channels?name=myChannel&number=23' 

我懷疑它會起作用。

我還會注意到這個函數可以寫得更簡單;

function(doc,req) { 
    doc.channels.push({"name":req.query.name, "number": parseInt(req.query.number)}); 
    return [doc, channel + ' added']; 
} 

請注意,「23」將作爲字符串傳遞,所以我還添加了一個parseInt調用。

+0

但是有可能傳遞一個JSON對象嗎?如: curl -X PUT'https:// server/db/_design/doc/_update/addChannel/channels?json = {「name」:「foo」,「channel」:23}' 我認爲{}和「將是一個問題...... 函數將是這樣的: 功能(DOC,REQ){ doc.channels.push(req.query.json); 回報[DOC,JSON +'添加']; } ?? – fjbelchi

+2

它會以字符串形式到達,但您始終可以通過JSON.parse傳遞它以獲取對象。 –