2011-09-21 77 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传递它以获取对象。 –