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);
当我想要检索它时,我必须使用lcb_get_cookie
man page返回一个void指针,但是说:“lcb_get_cookie()返回lcb_set_cookie()设置的值,如果是,则返回NULL
lcb_set_cookie()没有设置任何值。“所以我想做类似的事情:
/* 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的值?
修改 我忘了提到我需要进一步处理数据并希望对其进行更改。
答案 0 :(得分: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 */