Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Cloudant中向文档添加新字段而不丢失现有字段_Javascript_Node.js_Cloudant - Fatal编程技术网

Javascript 如何在Cloudant中向文档添加新字段而不丢失现有字段

Javascript 如何在Cloudant中向文档添加新字段而不丢失现有字段,javascript,node.js,cloudant,Javascript,Node.js,Cloudant,我试图根据用户输入将新字段添加到Cloudant中的文档中,但是当我插入时,我会覆盖文档并丢失现有字段,除非我使用insert发送它们 例如,我有一个命令执行对Cloudant的查询以接收文档,并返回\u id、\u rev、name和special\u id字段。此文档通过insert(是的,我使用的是\u rev)传递给一个新命令,该命令会附加一个字段,例如最喜爱的食物 现在,用户输入另一个命令,如“addschool”。流程重新开始,我查询Cloudant,我的查询返回\u id、\u r

我试图根据用户输入将新字段添加到Cloudant中的文档中,但是当我插入时,我会覆盖文档并丢失现有字段,除非我使用
insert
发送它们

例如,我有一个命令执行对Cloudant的查询以接收文档,并返回
\u id、\u rev、name和special\u id
字段。此文档通过insert(是的,我使用的是
\u rev
)传递给一个新命令,该命令会附加一个字段,例如
最喜爱的食物

现在,用户输入另一个命令,如“addschool”。流程重新开始,我查询Cloudant,我的查询返回
\u id、\u rev、name和special\u id
。我将
学校
字段附加到文档中,执行
插入
,但随后我检查文档,发现
最喜欢的食物
不见了

是否有一个参数可以传递给Cloudant
insert
函数,告诉它实际执行更新而不是覆盖

仅供参考,此操作正在节点上运行并使用该包。在文档中,我找不到有关参数的更多详细信息,典型的插入如下所示:

cloudantDb.insert(doc, params, function(error, response) {
  if (!error) {
    console.log("success", response);
    resolve(response);
  } else {
    console.log("error", error);
    reject(error);
  }
});

如果没有看到您的代码,很难确定。没有神奇的参数。在Cloudant中,创建、更新和删除之间没有区别——它们本质上都是在创建修订。你不能“修补”JSON文档,你需要每次都提供全部内容。下面是一个例子:

# Create a new document
curl -XPOST -H 'content-type:application/json' \
    'https://skruger.cloudant.com/testdb' -d '{"name":"stefan"}'
{"ok":true,"id":"5309a1784a9cc45d498e8170af7dcc3c","rev":"1-a0f0b27e1069f45cc121dfe5dc08f280"}

# Add a field
curl -XPUT -H 'content-type:application/json' \
 'https://skruger.cloudant.com/testdb/5309a1784a9cc45d498e8170af7dcc3c' \
  -d '{"_id":"5309a1784a9cc45d498e8170af7dcc3c", "_rev":"1-a0f0b27e1069f45cc121dfe5dc08f280", "name":"stefan", "fish":"pike pearch"}'
{"ok":true,"id":"5309a1784a9cc45d498e8170af7dcc3c","rev":"2-7c3ea3603c3e16962c7b33f50becc771"}

# Fetch it again
curl 'https://skruger.cloudant.com/testdb/5309a1784a9cc45d498e8170af7dcc3c' 
{"_id":"5309a1784a9cc45d498e8170af7dcc3c","_rev":"2-7c3ea3603c3e16962c7b33f50becc771","name":"stefan","fish":"pike pearch"}

# And another new field
curl -XPUT -H 'content-type:application/json' \
 'https://skruger.cloudant.com/testdb/5309a1784a9cc45d498e8170af7dcc3c' \
 -d '{"_id":"5309a1784a9cc45d498e8170af7dcc3c", "_rev":"2-7c3ea3603c3e16962c7b33f50becc771", "name":"stefan", "fish":"pike pearch", "sport":"tennis"}'
 {"ok":true,"id":"5309a1784a9cc45d498e8170af7dcc3c","rev":"3-e0f4d1ab1a47b046ea90a0fbbf34ff36"}

# Fetch again    
curl 'https://skruger.cloudant.com/testdb/5309a1784a9cc45d498e8170af7dcc3c'
{"_id":"5309a1784a9cc45d498e8170af7dcc3c","_rev":"3-e0f4d1ab1a47b046ea90a0fbbf34ff36","name":"stefan","fish":"pike pearch","sport":"tennis"}