javascript - 如何在不丢失现有字段的情况下向 Cloudant 中的文档添加新字段

标签 javascript node.js cloudant

我正在尝试根据用户输入向我在 Cloudant 中的文档添加新字段,但是当我执行插入操作时,我将覆盖文档并丢失现有字段,除非我使用 insert 发送它们.

例如,我有一个命令向 Cloudant 执行查询以接收文档,并返回 _id, _rev, name and special_id领域。该文档被传递给附加字段的新命令,例如 favorite_food , 通过插入(是的,我正在使用 _rev )。

现在,用户输入另一个命令,如“添加学校”。流程重新开始,我查询 Cloudant,查询返回 _id, _rev, name, and special_id .我附加一个 school字段到文档,做一个insert , 但后来我检查了文档和 favorite_food没了。

有没有我可以传递给 Cloudant 的参数 insert函数告诉它实际执行更新而不是覆盖?

仅供引用,这是在 Node 上运行并使用 node-cloudant包裹。在文档中我找不到关于参数的更多详细信息,典型的插入内容如下:

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"}

关于javascript - 如何在不丢失现有字段的情况下向 Cloudant 中的文档添加新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44978604/

相关文章:

javascript - 如何查找导致pm2重启的错误

javascript - 通过单击按钮从表中选择行并更新值

javascript - 如何使用 Babel 将所有包含的文件编译为一个?

java - 检索 JSON 附件及其属性

couchdb - cloudant 按多个值搜索索引

javascript - sinon.js spy 不会发现错误吗?

javascript - 在 while 循环中调用函数并赋值。骰子作业问题

javascript - Mongoose 模式无法读取未定义的属性 'password'

node.js 8080 端口未监听

javascript - cloudant 服务器上的版本和库支持是什么?