2017-09-05 53 views
-1

尝试通过在Spring数据中在Couchbase中附加值来变更子文档。但它失败:使用Spring数据变换Couchbase子文档

//样本文档

{ "type": "account", "events": [ { "transactionReference": "", "value": 100 } ] }

目的是添加事件数组中的一个条目。以下是正在执行操作的片段。

Event eventObj = new Event(...); repository.getCouchbaseOperations().getCouchbaseBucket() .mutateIn("doc_id") .arrayPrepend("events", eventObj,false).execute();

更新 execute()方法前面已经失踪。 下面是例外

com.couchbase.client.core.CouchbaseException: FAILURE at com.couchbase.client.java.subdoc.SubdocHelper.commonSubdocErrors(SubdocHelper.java:95) at com.couchbase.client.java.subdoc.AsyncMutateInBuilder$12.call(AsyncMutateInBuilder.java:923) at com.couchbase.client.java.subdoc.AsyncMutateInBuilder$12.call(AsyncMutateInBuilder.java:917) at com.couchbase.client.java.subdoc.AsyncMutateInBuilder$17.call(AsyncMutateInBuilder.java:1010) at com.couchbase.client.java.subdoc.AsyncMutateInBuilder$17.call(AsyncMutateInBuilder.java:1000) at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:69) at rx.observers.Subscribers$5.onNext(Subscribers.java:235) at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onNext(OnSubscribeDoOnEach.java:101) at rx.internal.producers.SingleProducer.request(SingleProducer.java:65) at rx.Subscriber.setProducer(Subscriber.java:209) at rx.Subscriber.setProducer(Subscriber.java:205) at rx.internal.operators.OnSubscribeMap$MapSubscriber.setProducer(OnSubscribeMap.java:102) at rx.Subscriber.setProducer(Subscriber.java:205) at rx.Subscriber.setProducer(Subscriber.java:205) at rx.subjects.AsyncSubject.onCompleted(AsyncSubject.java:106) at com.couchbase.client.core.endpoint.AbstractGenericHandler.completeResponse(AbstractGenericHandler.java:375) at com.couchbase.client.core.endpoint.AbstractGenericHandler.access$000(AbstractGenericHandler.java:69) at com.couchbase.client.core.endpoint.AbstractGenericHandler$1.call(AbstractGenericHandler.java:393) at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: rx.exceptions.OnErrorThrowable$OnNextValue: OnError while emitting onNext value: com.couchbase.client.core.message.kv.subdoc.simple.SimpleSubdocResponse.class

+0

您使用了哪些Couchbase客户端和服务器版本? FAILURE状态适用于JAVA SDK预期不到的错误。 –

回答

0

Couchbase Sub-Document API是助洗剂的API,允许你链在一起的多个发生变异的命令(或多个检索命令)的堆栈跟踪。使用Java SDK,您必须致电​​执行这些突变。

Event eventObj = new Event(...); 
repository.getCouchbaseOperations().getCouchbaseBucket() 
     .mutateIn("doc_id") 
     .arrayPrepend("events", eventObj,false) 
     .execute(); 
+0

我的坏@Jeff为错字,mutate方法不存在。我已更正了该片段。 –

相关问题