我一直试图找到这个要求的解决方案,但我遇到了许多死路一条.
我正在使用Cloudant作为用户文档的数据存储.每个用户文档都有一个名为"items"的字段(属性),它是一个对象数组.
所以用户文档如下所示:
{
"_id":"userid1",
"_rev":"XX",
"username": "foobaruser"
"items":
[
{
"date":1357879144069,
"text":"don't cry because it's over, smile because it happened.",
"cat":"determination"
},
{
"date":1357879179209,
"text":"those who mind don't matter, and those who matter don't mind.",
"cat":"fitness"
},
{
"date":1357883809736,
"text":"be the change that you wish to see in the world.",
"cat":"determination"
},
{
"date":1357879179209,
"text":"those who mind don't matter, and those who matter don't mind.",
"cat":"hardwork"
},
{
"date":1357879179209,
"text":"those who mind don't matter, and those who …Run Code Online (Sandbox Code Playgroud) 我想通过使用proxy_pass在我的域上运行NGINX来暴露Cloudant的一些couchdb功能.到目前为止,我已经解决了一些问题(如下所述),但就授权而言,我陷入困境.有人有任何提示吗?
location /couchdb {
rewrite /couchdb/(.*) /$1 break; #chop off start of this url
proxy_redirect off
proxy_buffering off;
proxy_set_header Host myusername.cloudant.com;
# cannot use $host! must specify my vhost on cloudant
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Authorization "Basic base64-encode(username:password)";
proxy_pass http://myusername.cloudant.com$request_uri;
# must use a variable in this url so that the domain is looked up late.
# otherwise nginx will fail to start about half the time because of resolver issues
# (unknown why though)
}
Run Code Online (Sandbox Code Playgroud)
使用此设置,我可以成功代理Cloudant,但我总是收到禁止的响应.例如,这个请求:
http://mydomain/couchdb/my-cloudant-db
Run Code Online (Sandbox Code Playgroud)
回报
{"error":"forbidden", …Run Code Online (Sandbox Code Playgroud) 我正在使用 Cordova/PhoneGap 创建适用于 Android 和 iOS 的移动应用程序,并使用 IBM 的 Cloudant 数据库进行存储。我正在使用 PouchDB javascript 库来访问 Cloudant 数据库。目前我有这个代码来访问它......
db = new PouchDB('https://[myaccount].cloudant.com/[mydb]', {
auth: {
username: 'myusername',
password: 'mypassword'
}
});
Run Code Online (Sandbox Code Playgroud)
我知道这是非常不安全的,并且想知道是否有更安全的方法从应用程序内连接到我的数据库?
我有一个cloudant DB,每个文档看起来像:
{
"_id": "2015-11-20_attr_00",
"key": "attr",
"value": "00",
"employeeCount": 12,
"timestamp": "2015-11-20T18:16:05.366Z",
"epocTimestampMillis": 1448043365366,
"docType": "attrCounts"
}
Run Code Online (Sandbox Code Playgroud)
对于给定的属性,有一个员工计数.正如您所看到的,我每天都有相同属性的记录.我正在尝试创建一个视图或索引,它将为我提供此属性的最新记录.这意味着如果我在2015-10-30和2015-11-10中插入了一条记录,那么返回给我的记录只是2015-11-10时间戳记录的员工数量.
我试过了视图,但我得到的每个属性的所有条目不仅仅是最新的.我没有看索引,因为我认为它们没有预先计算.我将从客户端查询此信息,因此预先计算(如视图)非常重要.
任何指导都将非常感激.谢谢
我正在开发移动应用程序(IOS),我已阅读couchDB文档以使用HTTP Api访问它,但是
1.如何实现用户注册,用户登录,电子邮件验证?就像parse.com正在做的那样.
我的计划是创建一个包含用户的数据库,每个文档都有用户名,密码,名字,姓氏,isemailverified,一些用户偏好以及一些更多的键值.
这是我面临的挑战:
2.如果有人在UserDatabase上查询,并且查询是与当前用户无关的查询,我应该拒绝该查询.为了克服这个挑战,我需要使用事后查询验证方法编写服务器端代码.我应该在哪里部署或开始编写此代码?
请反馈我的策略方式以及我需要在哪些方面进行改进?
我将使用restful接口与我的后端进行交互.
我一直在阅读有关pouchdb / couchdb / cloudant的文档和文章。我无法在脑海中创建这种简单的体系结构。我需要帮助!
因此,应用程序上有很多用户。每个用户都有一个单独的数据库(我读的是pouch / couch / cloudant设置中的方法)。
我应该使用pouchdb的Sync api吗?但据我所读,它同步了整个数据库。如何使用此api仅同步中央数据库的一部分。过滤后的复制在这里回答吗?
而且我也不想一次调用两个文档。他可以根据需要访问文档。
用邮袋/邮袋数据库实现此逻辑的正确方法是什么?如果您可以用一些代码解释一下,那就太好了。我只需要基本想法。
在即将发布的CouchDB 2.0和PouchDB-find发行版中,这种问题是否容易解决?
非常感谢!
我正在尝试使用AXIOS从Rest API获取数据,如下所示:
require('dotenv').config();
const axios = require('axios');
var url = 'https://931eb067-05c0-492a-8129-48ebfc27d426-bluemix.cloudant.com/dummy/_design/NEW_VIEW_DESIGN/_view/new-view?include_docs=true';
axios.get({url,auth: {
username: process.env.account,
password: process.env.password
}}).then((res)=>{console.log(res.data);})
.catch((e)=>{console.log(e)});
Run Code Online (Sandbox Code Playgroud)
我可以通过提供凭据来单独访问提及的URL,但是在使用AXIOS时出现以下错误
“ url”参数必须为字符串类型。在Url.parse处收到的类型对象
出了什么问题?
所以,我正在做的应该很简单,也许是这样,我只是做错了什么。我想更新我数据库中的现有文档,但我遇到了一些问题,有人可以提供建议吗?
Nano 的文档说明了以下插入内容:
db.insert(doc, [params], [callback])
Run Code Online (Sandbox Code Playgroud)
因此,我肯定能够做到以下几点:
var user = {
'firstname' : 'my',
'secondname' : 'name'
};
db.insert(user, {_rev: '2-cc5825485a9b2f66d79b8a849e162g2f'}, function(err, body) {});
Run Code Online (Sandbox Code Playgroud)
但是,每当我尝试这样做时,它都会创建一个全新的文档。如果我执行以下操作,它确实会更新我的文档,但当然,除了 _rev 之外,本文档中没有任何内容:
db.insert({_rev: '2-cc5825485a9b2f66d79b8a849e162g2f'}, function(err, body) {});
Run Code Online (Sandbox Code Playgroud)
所以问题是,我如何传入我的对象并让它更新,而不是创建一个新记录?
我正在使用 python-cloudant 库,尝试进行查询:
import cloudant
my_database = client['database']
query = cloudant.query.Query(my_database,selector={'selector': {'$gt': 0}},fields=['doi'])
for doc in query(limit=100, skip=100)['docs']:
print doc
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误: HTTPError: 400 Client Error: Bad Request for url: https://myurl.com/mydatabase/_find
当我尝试在浏览器中加载页面时出现此错误:{"error":"method_not_allowed","reason":"Only POST allowed"}
我在这里缺少什么?
有没有人有使用 Angular 2 Web 应用程序从 IBM Bluemix 上的 Cloudant 数据库中 CRUD 数据的任何示例代码?我在开发 Ionic 2 应用程序方面取得了一些成功。但是,我不确定如何对标准的 Angular 2 Web App 执行相同的操作。我一直无法在网上找到任何好的教程。