标签: cloudant

Cloudant搜索索引查询限制

为什么搜索索引查询的结果限制为200行,而标准视图查询似乎没有限制?

cloudant

9
推荐指数
1
解决办法
1869
查看次数

如何计算 Mango 查询返回的文档数

我有一个芒果查询:

{
  "selector": {
    "age":{
        "$eq": 22
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我想知道满足此条件的文档数量。

我知道我们可以使用 map reduce 函数来实现这一点,但是有什么方法可以通过使用 mango 查询来做到这一点,例如在查询本身中使用诸如“count”之类的键,就像我们对“sort”和“fields”所做的那样。

我正在通过 rest 客户端触发 mango 查询,并且我想要文档数作为查询的响应。

couchdb cloudant couchdb-mango couchdb-2.0

9
推荐指数
1
解决办法
3486
查看次数

我的hack是否将用户的私有数据存储在Cloudant上?

我想将用户的私人信息存储在Cloudant中的CouchDB上 - 即每个用户应该只能阅读和更新他自己的文档.通常这些信息保存在_users db中,但我真的很喜欢Cloudant的API密钥,并且不想自己管理用户和密码.

我在这个wiki中找到了几个解决方案:http: //wiki.apache.org/couchdb/PerDocumentAuthorization 但它们都有局限性:

  • "每用户数据库"真的很难管理.
  • "智能代理"从CouchDB和CouchApps中获取乐趣.
  • "基于每个用户的文档加密"过于复杂.

然后我想出了一个新的解决方案 - 我创建了一个数据库(称为"测试")并将所有用户配置为_writers,没有任何_readers.为了防止用户写下彼此的文档,我validate_doc_update在以下内容中设置_design/app:

function(newDoc, savedDoc, userCtx) { 
  if ((userCtx.roles.indexOf('_admin') < 0) && (userCtx.name != newDoc._id)) { 
    throw ({unauthorized: "cannot access others"});
  } 
}
Run Code Online (Sandbox Code Playgroud)

为了让用户阅读他们自己的文档,我编写了以下更新函数(称为"update_hack"):

function(doc, req) { 
    return [doc, toJSON(doc)];
}
Run Code Online (Sandbox Code Playgroud)

现在,每个用户都可以通过发送POST请求来"获取"他的文档:

http://<username>:<password>@<host>/db/_design/app/_update/update_hack/<username>
Run Code Online (Sandbox Code Playgroud)

如果用户尝试向其他用户的文档发送POST请求,请说:

http://<username>:<password>@<host>/test/_design/app/_update/update_hack/someoneelse
Run Code Online (Sandbox Code Playgroud)

那么他会得到一个{"error":"unauthorized","reason":"cannot access others"}回应,试图"更新"文件.

这种技巧效率低下,因为每次用户"获取"他的文档时,文档的修订都必须改变.还存在通过发送POST请求来实现用户名是否存在的问题(如果文档不存在,则将返回"null").

你觉得这个技巧有什么安全漏洞吗?

当用户通过API密钥生成时,是否有更好的方法来存储每个用户的私人文档?(即使有,我仍然认为我的伎俩很酷).

security authentication couchdb cloudant

8
推荐指数
1
解决办法
847
查看次数

连续复制的成本与一次性复制(使用TouchDB和Cloudant)

我们有一个使用Cloudant作为远程服务器的应用程序.尽管如此,Cloudant并不完全兼容TouchDB以往经验的持续复制.因此,我们现在的替代方案是以固定频率手动触发一次性复制.尽管如此,我们想知道这种方法是否会比连续复制花费更多的钱,因为连续复制使用longpoll并且不需要经常查询服务器.换句话说,使用Cloudant作为目标的一次性拉动复制是否需要我们GET请求?

谢谢你,保罗

couchdb nosql ios cloudant touchdb

7
推荐指数
1
解决办法
724
查看次数

CouchDB:链接引用不同文档类型数组的文档

对于CouchDB,我是新手.我来自.NET SQL Server世界.

在通过CouchDB浏览权威指南时,我觉得"这太棒了".现在我正在测试我学到的一些东西,希望在现实世界中实现它.

几周前我刚刚注册了Cloudant帐户,并开始使用它进行一些测试/学习.

在弄乱链接文档时,背后的整个理论看起来很简单,也是互联网上的海峡前沿例子.我想从具有不同链接文档数组的文档中检索某些信息,这些文档本身具有链接文档数组.就像连接到多对多关系表的多SQL Server一样.你会看到下面的代码.希望这是有道理的.

以此SQL查询为例.假设每个表中只有一个条目,我们应该返回一条记录,其中包含具有给定sku的鞋子的所有细节.但如果我们有多种鞋码,我们就不得不再写一些代码了.

select ci.sku
        ,sc.color
        ,ss.size
        ,si.url
from CatalogItem ci
    join ShoeImages si
        on ci.sku = si.sku
        and ci.sku = '656F-PINSEC12'
    join ShoeSizes ss
        on ci.sku = ss.sku
    join ShoeColors sc
        on ci.sku = sc.sku
Run Code Online (Sandbox Code Playgroud)

我希望CouchDB通过SKU返回以下JSON,网址https://username.cloudant.com/test/_design/catalogue/_view/item-details?include_docs=true&key=%22656F-PINSEC12%22

{
   "_id": "689fe6982f4d604541db67ee4050a535",
   "_rev": "5-64b5ddd751c51aadfcef1962c2c99c16",
   "type": "catalogue-item",
   "sku": "656F-PINSEC12",
   "upc": "8549875231",
   "shoe-colors": 
   [
        {
            "color": "black/houndstooth"
            "shoe-sizes": 
            [
                {
                    "size": 5,
                    "IsSizeAvailable": true
                },
                {
                    "size": 6,
                    "IsSizeAvailable": true
                },
                {
                    "size": 7,
                    "IsSizeAvailable": true …
Run Code Online (Sandbox Code Playgroud)

couchdb cloudant

7
推荐指数
1
解决办法
880
查看次数

使用本地CouchDB开发Cloudant

我正计划将我的数据库存储在Cloudant中.
在我们的应用程序的开发,测试和暂存期间使用本地CouchDB是否安全,并知道本地的所有工作都适用于Cloudant?

couchdb cloudant

7
推荐指数
2
解决办法
1027
查看次数

更新文档时的pouchDB query()错误

假设我有这三个文件:

{ "_id": "11111", "type": "template", "name": "person" }
{ "_id": "22222", "type": "template", "name": "place" }
{ "_id": "33333", "type": "template", "name": "thing" }
Run Code Online (Sandbox Code Playgroud)

我有一个云数据库,然后我有一个设备与该数据库的pouchDB同步.

这些是我做的步骤:

  1. 我同时将两个数据库同步.所以现在我的设备上有这个文档的最新版本.
  2. 我运行以下查询,然后我回复所有三个模板:

var template_obj = {};

return device_db.query('filters/templates')
.then((templates) => {
    for (let t of templates.rows) templates_obj[t.id] = true;
    return templates_obj;
});
Run Code Online (Sandbox Code Playgroud)

过滤器/模板

function (doc) {
  if(doc.type == "template")
    emit(doc._id);
}
Run Code Online (Sandbox Code Playgroud)

返回

{ "11111": true, "22222": true, "33333": true }
Run Code Online (Sandbox Code Playgroud)
  1. 我更新模板:云上的人.然后我再次更新它.因此,在没有同步到我的设备的情况下进行了2次修订.

  2. 我与我的设备同步.

  3. 现在,当我运行相同的查询时,我只返回我编辑的文档.这很奇怪,因为我没有触及任何其他文件.相同的视图返回云上的预期结果,但不返回设备上的预期结果.

返回

{"11111": true}
Run Code Online (Sandbox Code Playgroud)
  1. 但是,如果我执行以下代码,则所有模板将恢复正常,并且_rev云中的相同模板将显示在设备上.意味着同步成功并且视图变得混乱.

新代码

return device_db.allDocs({conflicts: …
Run Code Online (Sandbox Code Playgroud)

javascript couchdb cloudant pouchdb react-native

7
推荐指数
1
解决办法
219
查看次数

什么是云端文档到期字段?

文档到期字段是使用日期时间还是秒或毫秒设置的?据我所知,这是秒:

"expiration": 1543086426,
Run Code Online (Sandbox Code Playgroud)

所以 1543086426 = Saturday, November 24, 2018 7:07:06 PM

那么为什么Cloudant会删除该文档?如果是毫秒,那么:

1543086426 =  Sunday 18 January 1970 12:38:06
Run Code Online (Sandbox Code Playgroud)

这解释了.那么如何为cloudant文档设置合适的到期值,例如在1个月后呢?

此外,哪个Cloudant任务负责删除文档?它开始的频率是多少?

cloudant ibm-cloud

7
推荐指数
1
解决办法
108
查看次数

Cloudant和本地CouchDB安装2路复制

我正在尝试在本地CouchDB安装(Mac上为v 1.3.1)和Cloudant上的数据库中同步主 - 主复制.

在我的本地Futon中,http://localhost:5984/_utils我已将Replicator配置为将本地数据库复制到Cloudant.一切都可以很好地从本地数据库复制到Cloudant,但不能倒退.如果Cloudant数据库中的数据发生更改,则这些更改不会复制到我的本地数据库.

Local - > Cloudant =有效

Cloudant - > Local =不起作用

这有可能吗?有人可以帮忙吗?

谢谢!

couchdb cloudant

6
推荐指数
1
解决办法
1943
查看次数

CouchDB,如何仅获取文档更改

使用/_changes?filter=_design我可以获得设计文档的所有更改.

如何仅获取文档的所有更改?

有这样的事情吗/_changes?filter=_docs_only???

couchdb cloudant

6
推荐指数
1
解决办法
1098
查看次数