我正在尝试将其保存到Cloudant数据库:
[
{
"_id": "document_one",
"heynow": [
{
"Name": "one",
"Duration": 2,
"DurationUnit": "Hours"
},
{
"Name": "two",
"Duration": 40,
"DurationUnit": "Minutes"
}
]
},
{
"_id": "document_two",
"heynow": [
{
"Name": "three",
"Duration": 2,
"DurationUnit": "Hours"
},
{
"Name": "four",
"Duration": 40,
"DurationUnit": "Minutes"
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
但显然它不喜欢外括号,因为它告诉我:
"error":"bad_request","reason":"Document must be a JSON object"
Run Code Online (Sandbox Code Playgroud)
JSONLint说这是有效的,所以我想我问是否有人知道如何格式化它以便可以输入Couchdb,因为外括号似乎导致问题.
Cloudant似乎几乎检查了我们正在为我们的应用程序寻找的所有内容,但是从玩了一下它,我确实有一个设计障碍.
我们的应用程序需要拉近附近的X最近用户.我注意到在Cloudant中直接和一般搜索都可以使用地理查询.但是,我们希望保护用户的位置,因此想要查询距离点的距离,但返回的结果没有附加地理数据.
我一直在寻找一种方法,在geoindex之上加入"reduce"来过滤掉敏感数据,但这似乎并不存在.
我也知道我们可以创建一个处理查询的服务器并在返回客户端之前删除地理数据,但是Cloudant的最大吸引力之一就是它的脱机优先直接从应用程序端同步到数据库.
一些基于位置的教程涉及使用Envoy来划分用户数据(https://developer.ibm.com/clouddataservices/2016/06/14/location-tracker-part-1-offline-first/).这似乎是我们想要的方向,但它仍然不完全是这样,因为用户仍然根本没有彼此接触,而我们希望除了地理数据之外的所有内容都可以跨用户使用.
您是否有关于如何使用Cloudant进行此操作的建议?
我的查询具有以下选择器,
{
"selector": {
"_id": {
"$gt": null
},
"series": {
"$regex": "(?i)mario"
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我有一个带有 的文档series = mario12,上面的查询将返回这个不应该发生的文档。我希望我的查询只忽略“马里奥”的情况。
如何实现不区分大小写?
我尝试使用all_or_nothing设置为trueCloudant 进行原子批量文档更新,但得到以下响应:
[{"id":"7b75974f73c4230047b96b5272b696fd","rev":"1-e9b78ecba4c4ac29a9743cd001219eae","error":"not_implemented","reason":"all_or_nothing is not supported yet"},
{"id":"921faa913230839614a4feb19d5c39ec","rev":"0-","error":"not_implemented","reason":"all_or_nothing is not supported yet"}]
Run Code Online (Sandbox Code Playgroud)
我遵循CouchDB文档,因为Cloudant是CouchDB的一个分支,对于大多数用途它似乎是兼容的.不是在这种情况下.
所以我查看了Cloudant文档,实际上all_or_nothing根本没有提到该标志.在将Apache CouchDB数据迁移到Cloudant白皮书中也没有提及.
现在我想知道.. 是不是设计(如果数据以正确的NoSQL方式建模,可能不需要它?是否有适用于此的最佳实践?)或者它只是一个缺失的功能?
我见过Bluemix的烧瓶示例项目:https://github.com/IBM-Bluemix/bluemix-python-flask-sample
如何从此烧瓶应用程序连接到Cloudant?
注意:
我正在尝试为我的NoSQL数据库实现正确的查询,但我很困惑如何在Cloudant中执行此操作.在SQL中有
SELECT * FROM mydb
WHERE user_permit_doc_id = 10
AND user_tracking_id = 1
Run Code Online (Sandbox Code Playgroud)
我的查询如下:
https://293e2cb7-3561-4004-a1c3-58d54f517ee6-bluemix.cloudant.com/user_files/_design/user_tracking/_view/new-view?startkey=["user_permit_doc_id:10"]
Run Code Online (Sandbox Code Playgroud)
它返回所有文档,而不仅仅是具有此id的文档.
这是View的Map Reduce功能
function(doc) {
if(doc.user_tracking_id !== null){
emit(doc);
}
}
Run Code Online (Sandbox Code Playgroud)
我的docs数据库中的doc示例
{
"_id": "6e57baa78c6415beeee788bc786cc53a",
"_rev": "5-f15352bce99c307bd246bda4dc0da75a",
"user_tracking_id": "1",
"user_permit_id": "2",
"user_permit_doc_id": "10",
"user_id": "1",
"_attachments": {
"6y41j4i68cic.jpg": {
"content_type": "image/jpeg",
"revpos": 2,
"digest": "md5-KC+G5tbz2UWZSzlPHvBy/Q==",
"length": 68367,
"stub": true
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种简单的方法来处理移动应用程序中的离线/在线情况。看来 pouchdb 是与 cloudant 配对使用的一个有趣的选择。但是用它来存储图像等二进制数据是个好主意吗?或者存储大小或其他方面是否有限制?
我已经创建了_users数据库以及_security文档,并根据https://cloudant.com/for-developers/faq/auth/设置了相应的安全性.
然后我创建了一个角色为"_reader"的用户"test",但是当我尝试登录Cloudant时,它无法识别用户.
_users数据库包含一个文档:
{
"_id": "test",
"_rev": "1-96973497bc9c89989c4beed02e3f0b96",
"name": "test",
"roles": [
"_reader"
],
"type": "user",
"password": "password"
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用用户名"test"和密码"password"查看设计文档,如上所述,但它不起作用.
在设计文档所在的数据库的安全文档中,我有:
{ "couchdb_auth_only": true, "members": { "names": [ "test" ], "roles": [ "_reader" ] } }
Run Code Online (Sandbox Code Playgroud)
有什么建议?
谢谢!
我是Cloudant的新手,开发了一个利用壮观的Cloudant DaaS的Android应用程序.
这个应用程序只有一个DB,有几种类型的文档(比方说doc_type_1到doc_type_5).在我的情况下,我只想复制(推送到服务器)某些特定类型的文档(比如说doc_type_2和doc_type_5),而另一个只存储在本地数据库中.
我发现使用Couchbase Lite时这是一个简单的选择,正如它在文档中所解释的那样.但是我没有在Cloudant Sync for Android文档中找到任何东西(似乎只能过滤拉动复制).
有没有人遇到同样的问题?我想这是一个非常普遍的必需品,对吧?
我提前道歉 - 这个问题需要一些背景知识,这可能是冗长的:
我正在尝试构建一个可与 PouchDb 脱机工作的应用程序。PouchDb 将与 Cloudant 同步。
使用的技术:Hapi、SQL、Vue、Cloudant、PouchDb
我已经构建了一个小的 hapi.js 服务来注册/验证用户。当“帐户所有者”注册时 - 他们将作为新用户添加到 SQL 数据库中。
使用 Cloudants API,我提供了一个新数据库(使用随机名称),并在数据库上设置了安全性,以便新用户可以访问。
我将安全性(数据库名称、用户名和密码)作为元数据保存回 SQL 数据库中的用户。
与此处非常相似的方法:https : //www.bennadel.com/blog/3208-provisioning-cloudant-couchdb-databases-from-auth0-for-a-database-per-user-architecture-in-angular-2 -4-1.htm(确实,我基于以上内容)。
当“帐户所有者”登录时,查询 SQL 数据库 - 检索元数据并将其发送到客户端 vue 应用程序。然后使用 Cloudant 数据库名称、用户名和密码填充 PouchDB 远程字符串。
例如:
const remoteDB = new PouchDB(`https://${name}:${pass}@0000-0000-bluemix.cloudant.com/${DBname}`);
Run Code Online (Sandbox Code Playgroud)
这一切都有效:PouchDB 可以与 Cloudant 对话 - 并且数据可以毫无问题地进出。
“帐户所有者”能够授予其他人(“员工”)对其 cloudantDB 的读/写访问权限。当他们添加新的职员时,职员会被添加到 SQL 数据库中。使用 cloudants API,我为该用户创建了新的安全凭证,以便他们可以访问 DB-(我不创建新的 DB)并将它们保存到 SQL 数据库中的 Staff Member 作为元数据...
新员工会收到一封电子邮件 - 他们在 SQL db 上设置了他们的用户名和密码,然后可以登录。Cloudant 元数据被拾取......等等...... PouchDB / Couchdb 相互交谈 - 这也作品。
最初我有点担心将这个元/凭据发送给客户端 …