【问题标题】:Can't use "mutateIn" with couchbase node sdk不能将“mutateIn”与 couchbase 节点 sdk 一起使用
【发布时间】:2017-06-30 21:04:35
【问题描述】:

我正在尝试实现这段代码:

bucket.mutate_in('some_doc',
                  SD.array_append('some.array', 'Hello', 'World',
                                  create_parents=True))

我从这里得到的:https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html

我也在用这个:https://github.com/couchbase/couchnode

我无法从 couchbase 导入“子文档”,因为我收到一条错误消息说它不存在,并且当我尝试使用 mutateIn 方法(或 mutate_in 方法)时,我也收到一个错误消息说 mutateIn 是不是 Bucket 的属性(应该是)。

我想为我的沙发库存储桶中的一个文档将一个项目附加到一个数组(或创建一个数组,如果它不存在,然后将一个项目附加到它)。

【问题讨论】:

    标签: node.js couchbase couchnode


    【解决方案1】:

    您可能没有安装足够新的版本。根据release notes,子文档支持是在 2.3.0 中 GA'd,而在早期版本中添加为未提交。

    您的 package.json 或 npm list 命令说明了您拥有的版本?

    【讨论】:

    • 在我的 package.json 文件中:在 devDependencies 下我有 "@types/couchbase": "^2.1.30" 但在依赖项下我有 "couchbase": "^2.3.4"
    【解决方案2】:

    文档似乎不是最容易浏览的(子文档页面中的示例是用 Python 编写的,您可以从节点部分跳转到没有意识到的地方!) - 我遇到了同样的问题,请查看:https://developer.couchbase.com/documentation/server/4.6/sdk/nodejs/document-operations.html

    试试

    import couchbase from 'couchbase';
    
    let cluster = new couchbase.Cluster(config.couchbase.clusterIp);
    let couchbaseBucket = cluster.openBucket(config.couchbase.bucket);
    
    couchbaseBucket
      .mutateIn(documentId)
      .arrayAppend('key', value)
      .execute(function(err, fragment){
    
        if (!err || err.code == couchbase.errors.checkResults) {
            try {
              fragment.contentByIndex(0);
            } catch (e) {
              console.error('Error for index %d: %s', 0, e.message);
            }
        } else {
          console.error('Top-level document error: %j', err);
        }
    
      });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 2022-01-05
      • 2018-12-03
      • 2016-04-12
      • 1970-01-01
      • 2015-02-18
      相关资源
      最近更新 更多