Couchdb更新数组在更新函数中发送json对象

时间:2011-09-21 08:07:50

标签: curl couchdb

我正在尝试更新和传递一个json对象或变量的数组,并在函数中构建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'];}

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

但我得到的只是阵列中的这个:

{
    "name": "myChannel"
}

为什么不存在第二个变量?

是否可以在url中传递json对象,如:channels?json = {} ...... ??

由于

1 个答案:

答案 0 :(得分:3)

我怀疑你忘了用单引号将网址括起来。 &存在向你的shell表明它应该在后台运行命令(并且'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调用。