沙发基在Node.js中按日期减少



我必须制作一些代码来过滤带有沙发库,节点的活动用户.js

有一些用户文档,我用以下编码制作了一个视图:

我使用以下代码制作了一个名为"bydate"的视图:

function (doc, meta) {  
    if(meta.type == 'json') { 
        if(doc.type == 'user') { 
           if (doc.lastUpdate){ 
                emit(dateToArray(doc.lastUpdate),doc.name); }
        }
    }
} 

我必须在 couchbase 控制台中使用"group_level"设置按天、月或年过滤,但是我无法在节点.js端正确过滤它

这是我的节点.js代码

router.get("/activetodaycount",
    function(request,response,next)
    {
            var couchbase = require('couchbase');
            var ViewQuery = couchbase.ViewQuery;
            var params =
            { 
               'reduce'         : true
              , 'group_level'   : 3
              , 'connection_timeout' : 600000
              , 'limit' : 10
              , 'skip' : 0
              , 'stale' : false
              , 'inclusive_end' : false
            };
            var query = ViewQuery.from('users', 'bydate')
            couch.query(query, params, function(error, data) 
            {
                if (error)
                {
                    return next(error);
                }
                console.log(data)
                var out = [];
                for( var i = 0;i<data.length; i++ ) 
                {
                    console.log(data[i])
                    var user = data[i].id;
                    out.push(user)
                }
                response.json({'cnt':out.length});
             });  
    }

控制台输出为:

{ key : null, value : XX}

我不明白为什么我没有将 dateToArray 结果作为密钥。 有什么想法吗?

编辑:

以下是 Couchbase 控制台中过滤器结果的输出:

Key     Value
[2015,1,2,13,56,0]
user:0af1144d-a23b-4098-9079-13dea8eb24b1   null
[2015,1,2,13,56,0]
user:58bc2ca5-9c50-4a5f-a056-e2a7b32450fd   null
[2015,1,2,16,43,57]
user:6b5f1c46-bf1d-43d6-bf25-b3f1a2495cdf   null

我怀疑您使用的是节点 SDK 的 2.0.3(最新)版本,它忽略了您传递给 query 函数的params对象,因为它希望ViewQuery对象本身指定选项。

试试这个:

var couchbase = require('couchbase');
var ViewQuery = couchbase.ViewQuery;
var cluster = new couchbase.Cluster('localhost');
var bucket = cluster.openBucket('default', console.log);
var query = ViewQuery.from('users', 'bydate')
                     .group_level(6)
                     .stale(ViewQuery.Update.BEFORE)
                     .limit(10)
                     .range([2015,1,2,13,56,0], [2015,1,2,16,43,57], true);
bucket.query(query, console.log);  

请注意,range 方法采用开始键、结束键和包含结束布尔标志。

相关内容

  • 没有找到相关文章

最新更新