I have solved this issue by this:
Android Code: To create view.
Database db = server.getDatabase(strDbName);
db.open();
listenPort = startCBLListener(DEFAULT_LISTEN_PORT, server);
View v1 = db.getView(String.format("%s/%s",
strDbName,
"getrecords_typewise"));
//Here strDbName = database name, "getrecords_typewise" = View name.
v1.setMap(new Mapper()
{
@Override
public void map(Map<String, Object> document, Emitter emitter)
{
Object docType = document.get("type");
if (docType != null && document.get("is_active") != null &&
document.get("is_active").equals(true))
{
emitter.emit(new Object[]{docType.toString()}, document);
}
}
}, strVersion);
db.registerView(v1);
Phonegap Code:
config.views(["getrecords_typewise", {
startkey : ["contact"],
endkey : ["contact"],
descending : true
}], function(err, view)
{
var len = view['rows'].length;
var counter=0;
var data=[];
if(view['rows']!=null && view['rows'].length>0){
for(j=0;j<view['rows'].length;j++)
{
data.push(view['rows'][j].value);
}
}
});
On Sat, Feb 15, 2014 at 6:05 AM, Traun Leyden <[email protected]>wrote:
>
>
> On Thursday, February 13, 2014, Ami Gandhi <[email protected]> wrote:
>
>>
>>
>> But calling view from Phonegap is very slow!
>> Having this logs all the time.
>> 02-14 00:45:05.685: D/dalvikvm(6462): WAIT_FOR_CONCURRENT_GC blocked 14ms
>> 02-14 00:45:05.715: V/CBLDatabase(6462): call map for sequence=14
>> 02-14 00:45:05.750: D/dalvikvm(6462): GC_CONCURRENT freed 492K, 27% free
>> 13190K/17863K, paused 2ms+2ms, total 23ms
>>
>
> Have you taken a look at the Android Monitor / DDMS to see where the
> memory is being used?
>
>
>>
>> So, moving on native approach.
>>
>
> Did you follow the instructions from Daniel Carr above? Did you comment
> out the call to "CBLView.setCompiler(new CBLJavaScriptViewCompiler());"
>
> Another thing that could be going wrong, are you defining a view with the
> exact same name for the javascript based view you defined? I would
> recommend using a different name so they don't conflict.
>
>
>
>> But it is not working when I call view "amiview" from phonegap.
>>
>
> Is there an error message?
>
>
>
>
>> On Thursday, February 13, 2014 11:21:18 PM UTC+5:30, Traun Leyden wrote:
>>>
>>>
>>> I think there should be examples of that in https://github.com/
>>> couchbaselabs/TodoLite-PhoneGap.
>>>
>>> It should essentially be the same as making a view query via REST to
>>> CouchDB, so you can also check the CouchDB docs.
>>>
>>> @Chris -- I guess the recommended js library for talking to Couchbase
>>> Lite from javascript is "coax/hoax" right? Is there any others that people
>>> should be aware of that will make their lives easier?
>>>
>>> On Thursday, February 13, 2014, Ami Gandhi <[email protected]> wrote:
>>>
>>> Hi!
>>> Can you tell me how to query CBLView from phonegap android?
>>> Also, how to set startkey and endkey?
>>>
>>> On Monday, October 21, 2013 11:28:38 PM UTC+5:30, Traun Leyden wrote:
>>>
>>> Thanks for contributing this!
>>>
>>>
>>> On Sun, Oct 20, 2013 at 5:16 PM, Daniel Carr <[email protected]>wrote:
>>>
>>> Thanks for your replies.
>>>
>>> If anyone is keen to try this, it's pretty easy. I know very little java
>>> and was able to work it out, and the performance is way better.
>>>
>>>
>>> To get it to work, clone the git repo and import the modified cloned
>>> repo as a phonegap plugin:
>>>
>>> git clone https://github.com/couchbaselabs/Couchbase-Lite-PhoneGap-
>>> Plugin.git
>>> cd project
>>> phonegap local plugin add ../Couchbase-List-PhoneGap-Plugin
>>>
>>>
>>> Every time you modify the plugin, you need to remove and add it again.
>>>
>>> phonegap local plugin remove com.couchbase.lite.phonegap
>>> phonegap local plugin add ../Couchbase-List-PhoneGap-Plugin
>>>
>>>
>>>
>>> As a proof of concept, I edited /src/android/CBLite.java file in
>>> Cordova-Lite-PhoneGap-Plugin.
>>>
>>> Add these to the imports:
>>>
>>> import com.couchbase.cblite.CBLDatabase;
>>> import com.couchbase.cblite.CBLViewMapBlock;
>>> import com.couchbase.cblite.CBLViewMapEmitBlock;
>>>
>>>
>>> Remove the Javascript View thingy:
>>>
>>> - CBLView.setCompiler(new
>>> CBLJavaScriptViewCompiler());
>>>
>>>
>>>
>>> Declare a view as described here: http://docs.couchbase.co
>>> m/couchbase-lite/cbl-android/#working-with-views
>>>
>>>
>>>
>>> e.g.: (sorry about the dodgy tabulation)
>>>
>>>
>>> @@ -41,12 +45,25 @@ public class CBLite extends CordovaPlugin {
>>>
>>> CBLURLStreamHandlerFactory.reg
>>> isterSelfIgnoreError();
>>>
>>> - CBLView.setCompiler(new
>>> CBLJavaScriptViewCompiler());
>>> -
>>> String filesDir = this.cordova.getActivity().get
>>> FilesDir()
>>> .getAbsolutePath();
>>> CBLServer server = startCBLite(filesDir);
>>> -
>>> +
>>> + CBLDatabase db = server.getDatabaseNamed("treat
>>> ment");
>>> + CBLView testView = db.getViewNamed("ivetTest/
>>> test");
>>> + testView.setMapReduceBlocks(new
>>> CBLViewMapBlock() {
>>> +
>>> + @Override
>>> + public void map(Map<String, Object> document,
>>> CBLViewMapEmitBlock emitter) {
>>> + String type = (String)document.get("Type");
>>> + if( "TreatmentRecord".equals(
>>>
>>> --
>> You received this message because you are subscribed to the Google Groups
>> "Couchbase Mobile" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/mobile-couchbase/bc488580-9fab-4f22-8a51-a0bc697e931f%40googlegroups.com
>> .
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "Couchbase Mobile" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/mobile-couchbase/lAt7w3ntbKo/unsubscribe
> .
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/mobile-couchbase/CACSSHCHskg2tQ2ce8TckCh0j0PFZ314aidUP6UfztFhn2%3DqwVg%40mail.gmail.com
> .
>
> For more options, visit https://groups.google.com/groups/opt_out.
>
--
You received this message because you are subscribed to the Google Groups
"Couchbase Mobile" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/mobile-couchbase/CALA2sAYw%2Bpa59ekt6COiekndMMMytbMOA-dH-BCZ-c3ywiPSjw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.