2

Couchbase 使用基于事件的模型。因此,为了检索值,我必须设置一个回调处理程序,然后在数据库中抛出一个 get-request。它是这样完成的:

[... some stuff happens]
/* set up a callback for our get requests  */
lcb_set_get_callback(instance, get_callback);

get_callback我有一个cookie投入我的价值观。所以我解析我得到的对象并通过以下方式将其放入 cookie 中:

json_t *object;

[... some error handling and parsing]

/*Put the json_object into the cookie*/
lcb_set_cookie(instance, object);

当我想检索它时,我必须使用返回 void 指针的lcb_get_cookie 手册页,但会说:“lcb_get_cookie() 返回 lcb_set_cookie() 设置的值,如果 lcb_set_cookie() 没有设置值,则返回 NULL。” 所以我想做类似的事情:

/* Retrieve the ad out of the cookie*/
ad_json = lcb_get_cookie(instance);

当我尝试像这样使用它时,我收到警告: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default]. 所以我很困惑。如何检索我放入 cookie 的值?

编辑: 我忘了提到我需要进一步处理数据并想要对其进行更改。

4

1 回答 1

1

告诉编译器你保证不会改变那个 cookie:

json_t const * object = lcb_get_cookie(instance);

但是如果您需要更改它,您也许可以强制转换它,因为手册说“...libcouchbase 不会对该值做任何事情”。

json_t * object = (json_t *)lcb_get_cookie(instance);

但也许更安全的选择是将内容复制到新的 cookie,进行更改并重新设置?

我不知道 的确切布局json_t,如果它不包含任何内部指针,简单的赋值可能会解决问题:

 json_t const * old = lcb_get_cookie(instance);
 json_t * new = /* init pointer with your new object */;
 *new = *old; /* Copy data */
于 2013-10-03T11:52:35.793 回答