Couchdb更新数组发送更新函数中的json对象
问题描述:
我想更新和数组传递一个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 = {} ...?
感谢
答
我怀疑你忘了在单引号的网址。 &的存在表明它应该在后台运行命令(并且'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调用。
但是有可能传递一个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
它会以字符串形式到达,但您始终可以通过JSON.parse传递它以获取对象。 –