问题标签 [gocb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 一致的 N1QL 查询 Couchbase GOCB sdk
我目前正在为我的 Go Actor 库实现 EventSourcing。我现在遇到的问题是,当参与者重新启动并需要从事件日志中重放它的所有状态时,查询可能会返回不一致的数据。我知道我可以使用MutationToken
但是,如果我这样做,我将被迫按顺序编写所有事件,即最后一个事件写在最后。
这样,最后一个事件的突变标记就足以为特定参与者一致地获取所有数据。
然而,这非常慢,按顺序写入大约 10 000 个事件,我的设置大约需要 5 秒。
如果我改为使用 go 例程编写这 10 000 个异步,我可以在不到一秒的时间内写入所有数据。但是,写入的顺序是不确定的,我可以知道我可以信任哪个突变令牌。例如,由于常规调度 AFAIK,事件 999 可能在事件 843 之前写入。
我在这里有什么选择?
go - 奇怪的行为 GoLang 将字符串存储到变量中限制为 64 字节长度
我一直在尝试将大字符串存储到 GoLang 中的字符串变量中,但由于某些未知原因,GoLang 将字符串长度限制为 64 字节
这个字符串连接的主要目的是在运行时根据用户输入生成一个 couchbase 的 N1QL 查询
在这种情况下,如果我在变量缓冲区上进行调试,例如,我可以看到它只包含直到 "SELECT * FROM DB WHERE DB.ITEM_NAME="+userInput[0]+OR" 取决于用户输入的大小,它会有所不同并且它会限制字符串到第 64 个字符
sql-server - gocb:使用 golang 批量插入 couchbase - 未插入整个数据
我正在我的 SQL 服务器实例中创建 JSON 数据(大约 5000 条记录),并尝试使用 golang 中的批量插入操作将其插入到沙发库存储桶中。这里的问题是没有推送整个数据,并且仅插入随机数量的记录(2000 到 3000 之间)。
代码是:
请告诉我这里哪里出错了。
仅供参考,sql 查询中的列 ID 和 JSONdata 包含有效的键和 JSON 字符串。此外,将不胜感激其编码方式的任何改进建议。
go - 将 subdoc 操作错误与特定路径上的缺失数据区分开来
我有这个代码
如果我尝试请求文档中不存在的某些路径,我会收到错误消息"could not execute one or more multi lookups or mutations"
,这似乎也发生在某些不同的情况下。如何将路径上的缺失数据与所有其他类型的子文档错误区分开来?我想要这样的东西:
go - 如何使用golang SDK检查couchbase文档是否存在,而不检索完整内容?
在我的代码中,我想根据给定密钥存在的文档执行或不执行某些操作。但无法避免检索所有文档内容的额外网络开销。
现在我正在使用
并寻找err == gocb.ErrKeyNotFound
确定文件遗漏的情况。
有没有更有效的方法?
go - Couchbase gocb 批量操作提供部分空结果
在我们使用 gocb 的 go 代码中,我们正在查询一个返回 32k id 的视图。然后,我们执行批量查询(参见下面的代码),如CouchBase 博客文章中所述。然而,我们只得到部分结果。我们可以看到ruleset, _ := items[i].(*gocb.GetOp).Value.(*RuleSet)
它只返回前 2048 个 id 的值。然后 ids 2049 - 11322 不包含值等等。我们的结果如下所示:
(上面的行是简化的,键与实际数据不匹配,值也不匹配。)
很大一部分请求的数据实际上并没有返回:
bucket.do
在完成处理所有查询之前是否返回?我们查看了 API 代码,找不到解释。
知道如何解决这个问题吗?
提前谢谢,托斯滕
go - 将地理位置搜索查询与距离过滤/排序相结合的任何示例?
我正在使用 gocb 根据地理位置查询文档。到目前为止 NewGeoDistanceQuery
,该索引运行良好。现在我需要根据地理位置距离对结果进行排序。根据此处的文档 ,它说我需要在查询中传递排序参数!但NewGeoDistanceQuery
没有那个。所以搜索了sdk,发现NewSearchSortGeoDistance
这正是我想要的,但我对如何组合它们感到困惑。
我尝试了上面的解决方案,但得到了这个错误
我也尝试使用NewSearchSortGeoDistance
单独但相同的错误。对此有什么帮助吗?
go - 如何在通过 gocb 构建对 couchbase 的查询期间配置存储桶名称
我需要从 couchbase 存储桶中选择所有代理。我正在使用https://github.com/couchbase/gocb包来处理 couchbase。
我当前的查询如下所示:
但我觉得我需要用一些占位符替换存储桶名称,或者在将查询发送到 couchbase 之前设置的参数。
谁能告诉我该怎么做(没有Sprintf
:))?
UPD
现在我正在使用这个辅助函数:
go - gocb 访问包 gocb 中 results.go 中的内容 []byte
是否可以访问 goLang 中 Couchbase 实现的 []byte 字段或定义通用结构?
用例 在查询时不知道返回的结构类型。
->以下代码不完整,但应该显示我在做什么<-
json.Unmarshal(rawBytes, &someStruct)
datetime - 为什么 JSON 绑定中的时间格式会发生变化?
我创建了一个结构,它包含两个time.Time格式的字段,用 json 标签命名:start_time和end_time。
当我尝试使用 gin 框架通过 HTTP 发送 PUT 请求来更新这些值时,我发送的时间格式会在发送的结构中发生变化。我要发送的内容:
它收到什么:
另一方面,我将结构保存在沙发库中,并作为查询的返回值,我将文档(我的结构)发回:
我的查询:
它执行没有错误。当我试图读取返回的结构时,
我的阅读代码:
gocb 在这些时间项上生成错误,这是错误:
顺便说一句,正如我所说,更新完成时没有错误(查询执行时没有错误)。那我该怎么办呢?